OpenGL 渲染技巧:正背面剔除

当我们看一个正方体的时候,我们无论从什么角度观看,我们只能看见正方体的三个面,同理当立体图形通过OpenGL渲染的时候也会有这样的问题,我们把可以看见的三面先称做正面,看不见的称做背面,那在OpenGL渲染过程中的正背面是通过什么区分的呢?
说到OpenGL的正背面,这里需要先说一下正反三角形:


正反三角形.png

在默认情况下,OpenGL 认为具有逆时针⽅方向环绕的多边形为正 ⾯面. 这就意味着上图左边是正⾯面,右边是反⾯面.
当然正反是可以修改的,但是不推荐更改

glFrontFace(GL_CW);
GL_CW:告诉OpenGL 顺时针环绕的多边形为正⾯面;
GL_CCW:告诉OpenGL 逆时针环绕的多边形为正⾯面

知道了三角形的正反,接下来带大家了解立体图形的正背面


正反面.png

顺时针三角形的部分就是图形的背面,在渲染过程中如果没有设置正背面剔除就会在旋转过程中出现下列状况:


Snip20200710_15.png

为了解决此问题我们需要用到正背面剔除,说白了就是只渲染我们看的见的正面,这样不光解决了问题,还将效率提升了50%

//开启/关闭正背面剔除功能
    if (iCull) {
        glEnable(GL_CULL_FACE);
        glFrontFace(GL_CCW);
        glCullFace(GL_BACK);
    }else
    {
        glDisable(GL_CULL_FACE);
    }

解决后的效果如下:
Snip20200710_16.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容