2010-12-15 12 views
4

Ich möchte eine glutSolidSphere mit etwas Transparenz zeichnen, aber es scheint nicht zu funktionieren.Zeichnen einer festen Kugel mit Transparenz in openGL

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

In meiner Hauptfunktion initialisieren ich mit der folgenden Anzeigemodus:

glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA | GLUT_ALPHA); 

Was soll ich hier fehlt?

Antwort

13

Sie müssen alpha blending explizit einrichten. Another example.

glEnable (GL_BLEND);

glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

+0

Dies funktioniert jetzt, wenn sich mehrere Objekte überlappen. Wenn jedoch ein vollständig transparentes Objekt vorhanden ist und nichts dahinter ist, rendert es das Objekt anstelle der Hintergrundfarbe. – Etan

+1

Leeren Sie den Bildpuffer in jedem Frame? –

+0

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

Verwandte Themen