本系列中使用 GLFW(GL Framework) 和 GLEW(包含大量函数指针)来完成 OpenGL 程序。
一个顶点在呈现为像素之前经历的过程称为渲染管线,在此通常包含六个主要步骤:Vertex Shader, Shape Assembly, Geometry Shader, Rasterization, Fragment Shader, Tests and Blending。
传输顶点数据的过程中,我们将数据传送到一个 VAO 上,建立关联的 VBO 和 EBO 并分别将顶点数据和索引数据传输到其上,并通过 VAP 的设置来标识如何解析这些顶点数据。
通常我们需要自定义 Vertex Shader 和 Fragment Shader,我们将其分别写在两个文件中,并通过预先编写的 Shader 类加载、编译、链接、使用。着色器采用 GLSL 语言写成,其支持基本数据类型以及向量和矩阵,其灵活的语法可以对分量进行自由地组合。着色器有 in,out,uniform,其中 uniform 是可以在任意位置直接访问和修改的,通常用于主程序向 Shader 传递参数,例如在三维透视系统中我们可以将 MVP 矩阵传递给着色器,由着色器来完成矩乘运算。
加载贴图的过程中,我们借助了 SOIL 库来完成图像的读取,然后设置一些属性并生成 Mipmap。
GLM 库中包含了大量的 3D 相关的数学运算,我们可以用它来进行各种矩阵向量运算,以及根据参数生成 MVP 矩阵等。
通常在渲染三维场景的过程中,可能会出现五种坐标系统:Local, World, View, Clip, Screen,其间的 4 个过渡矩阵分别是 Model, View, Projection, Viewport。摄像机的描述属于基础三维向量应用在此不做赘述。
原文:https://www.cnblogs.com/mollnn/p/14724292.html