OpenGL:纹理和纯色对环境光的反应不同?
时间:2020-03-06 14:24:12 来源:igfitidea点击:
这是我在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()
)。通过某些设置(不记得是哪个设置),纹理本身会受到当前颜色的调制。
希望这对我们有所帮助或者至少会为我们指明有用的方向。