Comment utiliser la transparence alpha dans OpenGL?
-
06-07-2019 - |
Question
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 règle l'alpha sur 0). Y a-t-il quelque chose qui m'a échappé pour activer la transparence alpha?
La solution
Juste une supposition, mais est-il possible que vous n’ayez pas de couleur de fond? Ainsi, lorsque vous restituez le deuxième sommet qui a l'alpha 0.1, il n'y a pas de fond pour calculer la couleur correcte? Juste une supposition, cela fait des années que j'ai utilisé opengl.
Autres conseils
avez-vous un mélange alpha glEnable'd? Et avez-vous configuré vos paramètres de mélange? 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 );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow