4

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

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

问题是当我打开光源的环境分量时,两种多边形之间的接缝出现了。

看到这张图片: http ://www.shiny.co.il/shooshx/colorBug2.png

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

纹理上颜色的 RGB 值与彩色面的 RGB 值相同。纹理 alpha 到处都设置为 1.0。

为了给纹理着色,我使用 GL_MODULATE。

谁能想到会发生这种情况的原因以及可能的解决方案?

4

1 回答 1

2

你提到你用 设置颜色glColor(),所以我假设它GL_COLOR_MATERIAL是打开的?你用什么设置glColorMaterial()?在这种情况下,它应该是GL_AMBIENT_AND_DIFFUSE,以便glColor()调用影响环境颜色以及漫反射颜色。(这是默认设置。)

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

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

于 2008-09-19T01:07:21.223 回答