OpenGL:纹理和纯色对环境光的反应不同?

这是我在OpenGL应用程序中遇到的一个相当古老的问题.

我有一个相当复杂的模型,其中的一些多边形没有纹理,并使用glColor()的纯色和其他纹理.一些纹理与无纹理多边形颜色相同,两者之间不应有可见的接缝.

问题是当我调高光源的环境成分时,会出现两种多边形之间的缝隙.

看这个图像:http://www.shiny.co.il/shooshx/colorBug2.png

左图像没有任何环境光,右图像的环境光为(0.2,0.2,0.2).

纹理上颜色的RGB值与彩色面的RGB值相同.纹理alpha在任何地方都设置为1.0.

为了使纹理变暗,我使用了GL_MODULATE.

任何人都可以想到为什么会发生这种情况以及可能的解决方案?

最佳答案 你提到用glColor()设置颜色,所以我假设GL_COLOR_MATERIAL是打开的?你对glColorMaterial()使用什么设置?在这种情况下,它应该是GL_AMBIENT_AND_DIFFUSE,因此glColor()调用会影响环境颜色以及漫反射颜色. (这是默认设置.)

在渲染纹理映射面之前,您还可以尝试将所有材质颜色设置为白色(使用glMaterial()).通过一些设置(不记得哪个),纹理本身会被当前颜色调制.

希望这有助于或至少为您指明一个有用的方向.

点赞