片段的擦除(discarding fragments)和前面剪裁、后面剪裁(front face culling and back face culling)
前面剔除、背面剔除
由于这种绘制方法好像两个面都绘制成一模一样(当然实际只绘制一个面,也只可能看到一个面),所以又成为双面渲染。
背面剔除
使用背面剔除来减少需要绘制的三角形数量
背面剔除,顾名思义,就是在渲染的时候,将背对着观察者的面片丢弃,只将正面朝向观察者(观察者能看到的)面片进行计算。
OpenGL在渲染的时候如果看到这个面的顶点绕序不是正面绕序,那就判定其实背面,把它丢弃。
顶点绕序有两种:顺时针和逆时针。如下图,左边的就是顺时针绕序,右边的就是逆时针绕序:
顶点绕序
每个三角形图元的三个顶点都构成了一个顶点绕序。在渲染的时候,OpenGL会用这些信息来判断这是正面还是背面。默认情况下,顶点是逆时针顺序的会被认为是正面。
D3D中默认顶点以顺时针方向(在观察坐标系中)形成的三角形为正面,以逆时针方向形成的三角形为背面。
如何启用背面剔除
glEnable函数,传入的参数是GL_CULL_FACE
OpenGL还提供了一些控制背面剔除效果的函数,甚至连前面也可以剔除掉。调用glCullFace(GL