2010-09-17 28 views
1

Ce que j'essaie de faire est de sortir une texture masquée sur un iPhone en utilisant OpenGL ES 1.1. Le comportement de combinaison par défaut semble fonctionner à mon avantage jusqu'à ce que je veuille réellement faire varier l'ALPHA du résultat final!OpenGL ES utilisation de glColor4f en multi-texturation

La « une » variable flottante (Alpha) n'a pas d'effet ici: (Tout le reste bien sorties, il est masqué et le dessin bien en dehors de l'alpha étant de façon incontrôlable 1,0 Opaque)

/* 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); 

[modifier] L'ensemble la couleur n'a aucun effet, c'est comme si elle est définie sur (1, 1, 1, 1) donc ce n'est pas seulement l'alpha. [/ edit]

Pensez-y comme si vous aviez un calque masqué dans photoshop qui semble correct, maintenant tout ce que je veux faire est de définir l'opacité des calques. J'apprécie ton aide!

Répondre

1

C'est ce que fait GL_REPLACE, la couleur finale du fragment est la couleur de texture, peut-être que vous voulez utiliser GL_MODULATE, sur lequel la couleur finale du fragment est la multiplication de la couleur de la texture et de la vertex.

+0

Bon travail, c'était tout! – Kyle