OpenGL - Frage zur Verwendung von glDepthMask

Ich machte objectA in einer Szene wie folgt vor. Die Szene hat viele andere Objekte auch.

void Draw()
{    
    if( glIsList( displayListID ) )
    {
        glPushAttrib( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_ENABLE_BIT );

        glEnable( GL_BLEND );
        glEnable( GL_DEPTH_TEST );
        //glDepthMask( GL_FALSE );
        glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );

        glEnable( GL_LINE_SMOOTH );
        glEnable( GL_POINT_SMOOTH );
        glEnable( GL_POLYGON_SMOOTH );

        glMatrixMode( GL_MODELVIEW ); 

        color.setAlpha(alpha); //set alpha transparent of this objectA
        glCallList( displayListID );

        //glDepthMask( GL_TRUE );
        glDisable( GL_BLEND );  

        glPopAttrib();
    }
}

Hier ist nun das problem,

Wie gezeigt, ich kommentiere die beiden Zeilen
//glDepthMask( GL_FALSE );
//glDepthMask( GL_TRUE );

die Szene rendert die objectA und andere Objekte richtig in die Tiefe. Allerdings
die änderung der objectA alpha funktioniert nicht mehr (D. H. Farbe.setAlpha(alpha) ).

Wenn ich kommentieren Sie die oben genannten zwei Zeilen, dann alpha-Modifikation ist wieder an die Arbeit. Aber die Tiefe rendering ist NICHT korrekt. In anderen Worten, manchmal, die objectA sollte hinter anderen Objekten, aber es sieht aus wie die objectA ist vor alle Objekte.

Wie behebe ich dieses problem?

Danke

InformationsquelleAutor der Frage q0987 | 2010-08-02

Schreibe einen Kommentar