2010-09-17 128 views
1

我想要做的是使用OpenGL ES 1.1在iPhone上輸出一個蒙版紋理。默認的組合行爲似乎對我有用,直到我真的想改變最終結果的ALPHA!OpenGL ES在多紋理中使用glColor4f

的「a」(阿爾法)浮點變量具有這裏沒有效果:(其他的一切輸出細,它是掩蔽並從阿爾法是不受控制1.0不透明一邊拉絲很好)

/* Setup First Texture (RGBA Texture) */ 
glClientActiveTexture(GL_TEXTURE0); 
glActiveTexture(GL_TEXTURE0); 
glColor4f(r, g, b, a); 
glBindTexture(GL_TEXTURE_2D, t->tx); 
glVertexPointer(2, GL_FLOAT, 0, afPos); 
glTexCoordPointer(2, GL_FLOAT, 0, afUV); 
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); 

/* Setup Mask (RGBA Texture, White to Transparent Gradient) */ 
glClientActiveTexture(GL_TEXTURE1); 
glActiveTexture(GL_TEXTURE1); 
glEnable(GL_TEXTURE_2D); 
glColor4f(r, g, b, a); 
glBindTexture(GL_TEXTURE_2D, tMask->tx); 
glEnableClientState(GL_VERTEX_ARRAY); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
glVertexPointer(2, GL_FLOAT, 0, afPos); 
glTexCoordPointer(2, GL_FLOAT, 0, afUV); 

/* Make the Mask Repeat */ 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 


/* Draw Both */ 
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

[編輯]整個顏色根本沒有效果,就好像它被設置爲(1,1,1,1),所以它不僅僅是alpha。[/編輯]

想想它,就好像你有一個在Photoshop中的蒙面圖層看起來是正確的,現在我想要做的就是設置圖層不透明度。我感謝您的幫助!

回答

1

這就是GL_REPLACE所做的,最終的片段顏色是紋理顏色,也許你想使用GL_MODULATE,最終的片段顏色是紋理顏色和頂點顏色的乘積。

+0

幹得好,就是這樣! – Kyle 2010-09-17 04:47:36