OpenGLES demo - 6. Cull Face

来源:互联网 发布:切尔西鞋 知乎 编辑:程序博客网 时间:2024/06/03 07:20

原创文章,转载请注明链接 http://blog.csdn.net/hoytgm/article/details/34464751

这次简单的讲一下OpenGLES中的Cull Face,也就是面剔除。这一步通常发生在Fragment shader 之前,将我们不需要的面或看不见的面(比如背面)给剔除掉,这样可以很大程度上减轻fragment shader的压力,提高渲染的性能。


首先,我们需要启用Cull face的功能。

glEnable(GL_CULL_FACE);


刚才说到我们要剔除不需要的面,比如背面。那怎么区分一个面是正面还是背面呢?GLES,其实也是图形学中,我们用顺时针和逆时针来区分。但是不是说顺时针就是正面,逆时针就是反面,反过来也不成立。究竟一个面是正面还是反面,是由开发者自己来决定的。例如,我们这里将顺时针设置为需要剔除,那其实言外之意就是我们认为逆时针为正面。

glCullFace(GL_CW);
CW的意思是clockwise,也就是顺时针。如果需要逆时针的话,则是CCW,也就是counter-clockwise.


然后,我们建立顶点的时候,如果是逆时针建立的话,那我们就能画出来三角形,例如这样的顺序

    float vertices[] =    {        -0.5f, -0.5f, 0.5f, 1.0f,        0.5f, -0.5f, 0.5f, 1.0f,        -0.5f, 0.5f, 0.5f, 1.0f,    };


如果我们调换一下第二个点和第三个点的顺序,这时候三角形的建立方向就成了顺时针了,我们再画一遍,什么都没有了。

    float vertices[] =    {        -0.5f, -0.5f, 0.5f, 1.0f,        -0.5f, 0.5f, 0.5f, 1.0f,        0.5f, -0.5f, 0.5f, 1.0f,    };


这个很简单吧,代码也很简单,已上传,地址 http://download.csdn.net/detail/hoytgm/7583817


0 0
原创粉丝点击