3
我正試圖在一個簡單的四邊形上疊加另一張圖像。我將底部圖像設置爲紋理單元0,然後將頂部圖像(具有可變阿爾法)作爲紋理單元1.單元2具有模式GL_DECAL
,這意味着底部紋理應在alpha爲0時顯示,頂部當alpha爲1時紋理應該顯示。但是,只有頂部紋理顯示出來,底部紋理完全不出現。底部紋理應該顯示的只是白色。在iPhone上使用多紋理添加貼花紙
glGetError()不報告任何問題。任何幫助表示讚賞。謝謝!
glVertexPointer(3, GL_FLOAT, 0, boxVertices);
glEnableClientState(GL_VERTEX_ARRAY);
glClientActiveTexture(GL_TEXTURE0);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, boxTextureCoords);
glClientActiveTexture(GL_TEXTURE1);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, boxTextureCoords);
glClientActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
glClientActiveTexture(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);
glClientActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, one.texture);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glClientActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, two.texture);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
謝謝...現在我的頂部紋理顯示出來,但它仍然不正確。底部紋理完全不顯示(頂部紋理的alpha值爲0時只是白色)。我將用新信息編輯我的帖子。 – whooops 2009-12-16 06:58:57
那麼......也許你應該閱讀glClientActiveTexture和glActiveTexture的文檔?客戶端控制頂點數組設置(客戶端狀態),glActiveTexture控制紋理圖像。所以將所有調用切換到glClientActiveTexture不是正確的事情(啓用/綁定/ texenv仍然由glActiveTexture控制) – Bahbar 2009-12-16 08:58:30
啊,你是對的。謝謝。它現在有效。 – whooops 2009-12-16 16:16:24