2010-12-15 69 views
4

Je veux dessiner un glutSolidSphere avec une certaine transparence, mais cela ne semble pas fonctionner.Dessiner une sphère pleine avec la transparence dans openGL

glColor4f(1, 0, 0, 0); // should be completely invisible 
glPushMatrix(); 
glTranslatef(position.x, position.y, position.z); 
glutSolidSphere(3, 5, 5); 
glPopMatrix(); 

Dans ma fonction principale, j'initialiser le mode d'affichage suivant:

glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA | GLUT_ALPHA); 

Qu'est-ce que je manque ici?

Répondre

13

Vous devez configurer explicitement alpha blending. Another example.

glEnable (GL_BLEND);

glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

+0

Cela fonctionne maintenant si plusieurs objets se chevauchent. Toutefois, s'il existe un objet entièrement transparent sans rien derrière, il restitue l'objet à la place de la couleur d'arrière-plan. – Etan

+1

Etes-vous en train d'effacer le tampon de trame à chaque image? –

+0

void renderScene (vide) { \t glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); – Etan