美文网首页
OpenGL之glPolygonMode函数

OpenGL之glPolygonMode函数

作者: 叶子丝 | 来源:发表于2019-09-26 11:26 被阅读0次

    从三维的角度来看,一个多边形具有两个面。每一个面都可以设置不同的绘制方式:填充、只绘制边缘轮廓线、只绘制顶点,其中“填充”是默认的方式。

    使用glPolygonMode函数来设置模式。

    void glPolygonMode(GLenum face,GLenum mode);

    face这个参数确定显示模式将适用于物体的哪些部分,控制多边形的正面和背面的绘图模式:
    GL_FRONT:表示显示模式将适用于物体的前向面(也就是物体能看到的面)
    GL_BACK:表示显示模式将适用于物体的后向面(也就是物体上不能看到的面)
    GL_FRONT_AND_BACK:表示显示模式将适用于物体的所有面

    mode这个参数确定选中的物体的面以何种方式显示(显示模式):
    GL_POINT:表示只显示顶点,多边形用顶点显示
    GL_LINE:表示显示线段,多边形用轮廓显示
    GL_FILL:表示显示面,多边形采用填充形式

    例子:可以为两个面分别设置不同的方式。

    glPolygonMode(GL_FRONT, GL_FILL);           // 设置正面为填充方式
    glPolygonMode(GL_BACK, GL_LINE);            // 设置反面为边缘绘制方式
    glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); // 设置两面均为顶点绘制方式 
    

    剔除多边形表面

    在三维空间中,一个多边形虽然有两个面,但我们无法看见背面的那些多边形,而一些多边形虽然是正面的,但被其他多边形所遮挡。如果将无法看见的多边形和可见的多边形同等对待,无疑会降低我们处理图形的效率。在这种时候,可以将不必要的面剔除。
    首先,使用glEnable(GL_CULL_FACE);来启动剔除功能(使用glDisable(GL_CULL_FACE)可以关闭之)
    然后,使用glCullFace来进行剔除。

    glCullFace的参数可以是GL_FRONT,GL_BACK或者GL_FRONT_AND_BACK,分别表示剔除正面、剔除反面、剔除正反两面的多边形。默认GL_BACK。

    注意:剔除功能只影响多边形,而对点和直线无影响。例如,使用glCullFace(GL_FRONT_AND_BACK)后,所有的多边形都将被剔除,所以看见的就只有点和直线。

    相关文章

      网友评论

          本文标题:OpenGL之glPolygonMode函数

          本文链接:https://www.haomeiwen.com/subject/xfdlyctx.html