web-dev-qa-db-fra.com

Comment utiliser la transparence alpha dans OpenGL?

Voici mon code:

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();
}

Le problème est que ces deux points semblent identiques (même lorsque je mets l'alpha à 0). Y a-t-il quelque chose que j'ai manqué pour activer la transparence alpha?

26
H-H

Juste une supposition, mais se pourrait-il que vous n'ayez pas de couleur d'arrière-plan? Donc, lorsque vous rendez le deuxième sommet qui a alpha 0,1, il n'y a pas d'arrière-plan pour calculer la bonne couleur? Juste une supposition, cela fait des années que je n'utilise pas opengl.

18
Andrew Keith

avez-vous glEnable'd alpha blending? Et avez-vous configuré vos paramètres de fusion? Vous ne pouvez pas simplement définir l'alpha dont vous avez besoin pour configurer divers autres paramètres dans OpenGL.

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable( GL_BLEND );
60
Goz