¿Cómo usar la transparencia alfa en OpenGL?
-
06-07-2019 - |
Pregunta
Aquí está mi código:
void display(void);
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable( GL_BLEND );
glutInitWindowSize(600,600);
glutInitWindowPosition(200,50);
glutCreateWindow("glut test");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glPointSize(8);
glBegin(GL_POINTS);
glColor4f(.23,.78,.32,1.0);
glVertex2f(0,0);
glColor4f(.23,.78,.32,0.1);
glVertex2f(0.1,0);
glEnd();
glFlush();
}
El problema es que estos dos puntos parecen idénticos (incluso cuando configuro el alfa en 0). ¿Hay algo que me haya perdido para habilitar la transparencia alfa?
Solución
Solo una suposición, pero ¿podría ser que no tienes un color de fondo? Entonces, cuando renderiza el segundo vértice que tiene alfa 0.1, ¿no hay fondo para calcular el color adecuado? Solo una conjetura, hace años que no uso opengl.
Otros consejos
has glEnable'd mezcla alfa? ¿Y has configurado tus parámetros de mezcla? No puedes simplemente configurar el alfa que necesitas para configurar otros parámetros en OpenGL.
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable( GL_BLEND );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow