代码之家  ›  专栏  ›  技术社区  ›  Drew Noakes

OpenGL-GL前端与GL前端与后端

  •  3
  • Drew Noakes  · 技术社区  · 14 年前

    我正在修改一个使用OpenGL进行3D渲染的开源项目。在材质的构造中,我看到了如下代码:

    // set ambient material reflectance
    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mAmbient);
    

    在其他示例中,使用的是:

    glMaterialfv(GL_FRONT, GL_AMBIENT, mAmbient);
    

    所以我的问题是,这里有什么区别?在什么情况下,它看起来会有所不同,如果我的卷被所有指向外部的法线包围,那么性能有什么不同吗?

    1 回复  |  直到 14 年前
        1
  •  7
  •   Thanatos    14 年前

    一个设置正面和背面的材质,另一个设置正面。如果你剔除后面的人脸,那就不重要了。如果你不剔除背面,那么你只能看到正面的材质。

    如果你封闭一个卷,你可能不会直接看到背面-唯一的方法是如果相机在卷内。如果它在外面,你就永远看不到背面,也没有必要渲染它们。(这就是为什么在许多游戏中,如果你强迫相机进入一个对象,它看起来像所有的多边形都是单面的:那就是背面剔除)OpenGL只是能够为三角形/四边形/等等的正面和背面设置不同的属性。