2012-04-16 12 views
7

Estoy usando glColor4f(). Sorprendentemente, cambiar el alfa, es decir, el cuarto argumento no causa ningún cambio en la transparencia. El segmento de código es:glColor4f() - efecto del valor alfa

const GLfloat squareVertices[] = { 
0.5, 0.5, 0.0, 
-0.5, 0.5, 0.0, 
0.5, -0.5, 0.0, 
-0.5, -0.5, 0.0}; 

glEnableClientState (GL_VERTEX_ARRAY); 
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 
glColor4f (1.0, 0.0, 0.0, 0.5); 
glLoadIdentity();  
glTranslatef(0, 0, -5); 
glVertexPointer(3, GL_FLOAT, 0, squareVertices); 
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

¿Alguna sugerencia sobre dónde podría estar yendo mal?

Respuesta

13

necesita habilitar mezcla si desea utilizar la transparencia:

glEnable(GL_BLEND);

Consulte también glBlendFunc para configurar la función de fusión.

+0

Gracias por el puntero. – Iceman

+0

Buena respuesta, @Tim. Su uso está bastante bien documentado en el wiki de OpenGL, pero aquí va una función de combinación de muestra, por si acaso: 'glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);' – Fernando

Cuestiones relacionadas