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

时间:2008-09-19 00:50:35

标签: opengl textures

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

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

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

见此图片:http://www.shiny.co.il/shooshx/colorBug2.png

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

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

要使纹理变暗,我使用GL_MODULATE。

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

1 个答案:

答案 0 :(得分:2)

您提到您使用glColor()设置颜色,因此我假设GL_COLOR_MATERIAL已启用?您对glColorMaterial()使用什么设置?在这种情况下,它应该是GL_AMBIENT_AND_DIFFUSE,因此glColor()调用会影响环境颜色以及漫反射颜色。 (这是默认设置。)

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

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