2008-09-19 52 views
4

這是我在OpenGL應用程序中遇到的一個相當老的問題。OpenGL:紋理和普通顏色對環境光有不同的反應?

我有一個相當複雜的模型,其中的一些多邊形是無紋理的,並且使用帶有glColor()的純色進行着色,而其他多邊形則進行紋理化。一些紋理與無紋理的多邊形顏色相同,兩者之間應該沒有明顯的接縫。

問題是,當我調出光源的環境成分時,會出現兩種多邊形之間的接縫。

看到此圖像:http://www.shiny.co.il/shooshx/colorBug2.png

左邊的圖像是沒有任何周圍光線和右圖像是具有環境光(0.2,0.2,0.2)。

紋理上的顏色的RGB值與彩色面的RGB值相同。紋理alpha在任何地方都設置爲1.0。

遮罩紋理我使用GL_MODULATE。

任何人都可以想到爲什麼會發生這種情況的原因和可能的解決方案?

回答

2

你提到你設置顏色爲glColor(),所以我假設GL_COLOR_MATERIAL是在?你用什麼設置glColorMaterial()?在這種情況下,它應該是GL_AMBIENT_AND_DIFFUSE,因此glColor()調用會影響環境顏色以及漫反射顏色。 (這是默認設置。)

您還可以嘗試在渲染紋理映射的面之前將所有材質顏色設置爲白色(使用glMaterial())。有了一些設置(不記得是哪個),紋理本身就會被當前顏色調製。

希望這有助於或至少指出你有用的方向。