📄️ 1 - 深度测试
在入门阶段,我们使用深度缓冲(Depth Buffer)来让渲染的箱子可以被正确显示。本文将进一步讨论这些存储在深度缓冲/Z-Buffer中的深度值,以及它们是如何确定片段的先后次序的。
📄️ 2 - 模板测试
在片段着色器处理完一个片段后,模板测试(Stencil Test)就会开始运行,它也会丢弃部分片段,随后剩下的片段会进入深度测试。
📄️ 3 - 混合
OpenGL中,混合(Blending)通常是实现物体透明度的一种技术。例如透过玻璃去看物体:
📄️ 4 - 面剔除
为了节省片段着色器的执行数以提升效率,OpenGL只渲染观察者能看到的面,这被称为面剔除(Face Culling)。
📄️ 5 - 帧缓冲
之前学过的用于写入颜色值的颜色缓冲、写入深度信息的深度缓冲和允许根据特定条件丢弃片段的模板缓冲,结合起来就叫做 帧缓冲(Frame Buffer)。一个帧缓冲可以拥有多个颜色附件和一个深度附件,但是默认最终只有 0 号帧缓冲会被输出到屏幕。
📄️ 6 - 立方体贴图与环境映射
本文将讨论立方体贴图及其应用——天空盒,然后讨论光的折射和反射是怎么进行的,并将其应用在模型上。
📄️ 7 - 进阶缓冲操作
本文将讨论有关OpenGL缓冲的一些高级操作。
📄️ 8 - 进阶GLSL
本文将讨论有关GLSL的一些高级知识,例如内建变量、uniform缓冲对象等。
📄️ 9 - 几何着色器
本文将讨论OpenGL中的几何着色器(Geometry Shader)的用法等。
📄️ 10 - 实例化
如果我们要在同屏中渲染大量形状重复的物体,例如草原中的草,如果调用上千次如glDrawArrays()的渲染绘制函数,会极大的影响性能(GPU渲染物体快,但是CPU和GPU通信太频繁了,反而更慢了)。不妨再次运用“批处理思想”,只调用一次渲染函数,并告诉GPU该渲染几个该物体。
📄️ 11 - 抗锯齿
如图,在没有开启抗锯齿的情况下,我们渲染出的画面会出现走样现象: