【二十二,学习小结】

学习openGl有二十来天了,接触、学习了以下内容:

  1. OpenGL是什么
    openGL是一组API规范,其只定义了一个函数接受哪些参数,返回哪些参数,据图的实现由开发者(显卡开发商)来进行;

  2. 相关库

  • GLFW :封装了创建窗口等功能;
  • GLAB :动态加载OpenGL函数;
  • stb_image : 一个简单易用的图像加载库;
  1. 创建窗口
    初始化GLFW;
    设置相关参数:主版本、最小版本、设置使用的模式、设置向前兼容;
    创建窗口;
    渲染;

  2. 绘制图形(三角形、矩形)
    定义顶点数据;
    定义顶点、片段着色器;
    编译着色器;
    生成着色器程序,链接着色器;
    生成绑定VAO、VBO、EBO;
    拷贝顶点数据到VBO;
    绑定顶点数组;
    使用着色器进行渲染;

  3. 着色器语言(GLSL)
    GLSL是专门用来处理图形计算的,它是一种类C语言,变量类型包含C语言的基本类型int、float、double、uint和bool。其他支持的类型是向量矩阵
    in:定义的变量为输入变量;
    out : 定义的为输出变量;
    uniform :定义的变量可以在CPU程序中进行设置值;
    顶点着色器是一个内置变量,需要顶部着色器为其赋值,其第四维度使用来做透视除法的;
    片段着色器必须有一个输出变量指明片段的颜色值;
    上一个着色器输出变量会被下一个着色器中指明为in类型的同名变量接受,这样实现着色器之间的参数传递;

  4. 纹理
    用来为创建的物体展示更多的细节,使用开源库stbi_image可以加载解析多种格式的图片。纹理的使用:

  • 在顶点数据中定义纹理坐标;
  • 使用stbi_image加载图片数据;
  • 创建绑定纹理;
  • 拷贝图片数据到纹理对象中;
    在使用多个纹理时需要使用到纹理单元了,OpenGL至少支持十六个纹理单元GL_TEXTURE0~GL_TEXTURE15。
    使用多个图片渲染时:
  • 激活对应的纹理单元
  • 绑定纹理对象

总的来说,学习OpenGL比较吃力,在学习绘制三角形这一节时反反复复看了四五遍,第一天看不明白,第二天还是很模糊,改变策略,一天看一小节,反复的看这一小节,把例子代码读两遍,抄几遍,默写几遍,只要理解了流程、记住了关键函数再回头看文章就很容易了。

你可能感兴趣的:(【二十二,学习小结】)