2012-04-04 91 views
2

我想將紋理放入我的Java OpenGL場景中,但是當我做其他事情的顏色偏斜時,就好像它混合的顏色不正確。我使用LWJGL進行OpenGL和Slick加載紋理。當我離開GL11.glEnable(GL11.GL_TEXTURE_2D);調用未註釋的顏色變暗時,但是當我評論一行顏色是正確的,但我顯然沒有紋理。Java OpenGL GL_TEXTURE_2D加深其他顏色

我已經把這裏http://codepaste.net/26bguu

我的代碼有問題的行是行63

一個解決我發現是使紋理之前我畫的紋理,然後再後立即停用。但我覺得這應該是不必要的。以下是顯示我的意思的一些截圖。唯一的區別是一行評論與未評論。

​​

With textures enabled. All colours are darker.

回答

3

你這樣做實際上需要啓用和禁用需要GL_TEXTURE_2D

如果GL_TEXTURE_2D被啓用,GL將(通常)忽略您提供頂點顏色,而是映射給定的紋理座標給定的紋理獲取每個片段/像素的顏色。如果你不通過它的紋理座標,任何事情都可能發生 - 就像你發佈的第二個截圖一樣。

不得不做20個以上的opengl調用來準備繪製每個「對象」的情況並不少見。這就是爲什麼OpenGL程序員花費大量時間將大量的三角形組合到單個緩衝區中以便在一次繪製調用中一次繪製的情況 - 這大大提高了性能。

+0

好的,我將使用我認爲是一個相當冒險的解決方案的解決方案:P哦,我還沒有學習OpenGL的來龍去脈。謝謝您的幫助。 – null0pointer 2012-04-04 15:38:25