OpenGL 背面剔除
OpenGL 中如何开启背面剔除
在OpenGL种可使用glEnable(GL_CULL_FACE)开启背面剔除功能,即把那些我们看不见的面删除。但在剔除之前我们需要定义正面和背面,这个可以用法线来理解。在数学学科中,法线是用右手法则定义的,如图:
右手法则
首先右手手指全部张开,使右手除拇指之外的四指从起始向量向终止向量握住,大拇指的方向即为法线方向。OpenGL中默认是右手法则,即点的顺序为逆时针方向时,这个面为正面。但同时OpenGL也提供了API改变默认的设定。
- glFrontFace可改变正面判断原则,默认时GL_CCW(逆时针),可改为GL_CW(顺时针);
- glCullFace可改变要剔出的面,默认是GL_BACK(剔除背面),还可以是GL_FRONT(剔除正面),GL_FRONT_AND_BACK(剔除所有面)。