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?

¿Fue útil?

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
scroll top