OpenGL渲染流程图示
这里可以看到一个简单的渲染流程,以及CPU和GPU在渲染过程中分别执行的操作,这里将 CPU发送指令到GPU 的过程 称为一次DrawCall。
按照上图简单分析一下:
CPU的工作:通过读取模型数据(.obj文件存储模型顶点信息,模型UV信息,模型顶点索引信息)传递给GPU。
GPU的工作:顶点着色器 -->>光栅化 -->> 片段着色器 -->> Alpha测试 -->>模板测试 -->> 深度测试 -->> Blend -->>GBuffer -->> frontBuffer -->> frameBuffer -->> 输出到显示器
整个过程就是将模型的顶点信息通过矩阵运算变幻到窗口坐标系中(矩阵中的MVP变换,因为OpenGL采用的是列矩阵运算方式,实际的矩阵运算方程是从右往左运算,Vclip=Mprojection⋅Mview⋅Mmodel⋅Vlocal),在OpenGL 中vertex data顶点数据被存放到VBO(vertex buffer object)中,索引缓冲数据存放在EBO中,通过管线传到GPU中VAO(Vertex Array Object),然后通过GPU的渲染管线将数据输出到屏幕。