这是我在OpenGL应用程序中遇到的一个相当古老的问题。
我有一个相当复杂的模型,其中的一些多边形没有纹理,并使用glColor()的纯色进行着色,而其他多边形则有纹理。一些纹理与无纹理多边形颜色相同,两者之间应该没有可见的接缝。
问题在于,当我调高光源的环境成分时,会出现两种多边形之间的缝隙。
见此图片:http://www.shiny.co.il/shooshx/colorBug2.png
左图像没有任何环境光,右图像的环境光为(0.2,0.2,0.2)。
纹理上颜色的RGB值与彩色面的RGB值相同。纹理alpha在任何地方都设置为1.0。
要使纹理变暗,我使用GL_MODULATE。
任何人都可以想到为什么会发生这种情况以及可能的解决方案吗?
答案 0 :(得分:2)
您提到您使用glColor()
设置颜色,因此我假设GL_COLOR_MATERIAL
已启用?您对glColorMaterial()
使用什么设置?在这种情况下,它应该是GL_AMBIENT_AND_DIFFUSE
,因此glColor()
调用会影响环境颜色以及漫反射颜色。 (这是默认设置。)
在渲染纹理贴图面之前,您还可以尝试将所有材质颜色设置为白色(使用glMaterial()
)。通过一些设置(不记得哪个),纹理本身会被当前颜色调制。
希望这有助于或者至少为您指明一个有用的方向。