当我们看一个正方体的时候,我们无论从什么角度观看,我们只能看见正方体的三个面,同理当立体图形通过OpenGL渲染的时候也会有这样的问题,我们把可以看见的三面先称做正面,看不见的称做背面,那在OpenGL渲染过程中的正背面是通过什么区分的呢?
说到OpenGL的正背面,这里需要先说一下正反三角形:
在默认情况下,OpenGL 认为具有逆时针⽅方向环绕的多边形为正 ⾯面. 这就意味着上图左边是正⾯面,右边是反⾯面.
当然正反是可以修改的,但是不推荐更改
glFrontFace(GL_CW);
GL_CW:告诉OpenGL 顺时针环绕的多边形为正⾯面;
GL_CCW:告诉OpenGL 逆时针环绕的多边形为正⾯面
知道了三角形的正反,接下来带大家了解立体图形的正背面
顺时针三角形的部分就是图形的背面,在渲染过程中如果没有设置正背面剔除就会在旋转过程中出现下列状况:
为了解决此问题我们需要用到正背面剔除,说白了就是只渲染我们看的见的正面,这样不光解决了问题,还将效率提升了50%
//开启/关闭正背面剔除功能
if (iCull) {
glEnable(GL_CULL_FACE);
glFrontFace(GL_CCW);
glCullFace(GL_BACK);
}else
{
glDisable(GL_CULL_FACE);
}
解决后的效果如下: