Frage zu Blending (OpenGL)



  • Hallo ich zeichne mit folgendem Code:

    lDisable(GL_LIGHTING);
    		glActiveTextureARB(GL_TEXTURE0_ARB);
    		glEnable(GL_TEXTURE_2D);
    		glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
    		glBindTexture(GL_TEXTURE_2D, textur[1].get_texture());          //Textur 1 laden
    
    		glBegin(GL_QUADS);
    			glMultiTexCoord2fARB(GL_TEXTURE0_ARB,0.0f,0.0f); glVertex3d(20,    10,    0 );
    			glMultiTexCoord2fARB(GL_TEXTURE0_ARB,1.0f,0.0f); glVertex3d(30,    10,     0);
    			glMultiTexCoord2fARB(GL_TEXTURE0_ARB,1.0f,1.0f); glVertex3d(30,    10,     10);					
    			glMultiTexCoord2fARB(GL_TEXTURE0_ARB,0.0f,1.0f); glVertex3d(20,    10,     10);					
    		glEnd();
    
    		glDisable(GL_TEXTURE_2D);
    
    		glActiveTextureARB(GL_TEXTURE1_ARB);
    		glEnable(GL_TEXTURE_2D);
    		glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
    		glEnable(GL_BLEND);
    
    		glBlendFunc(GL_ONE,GL_ZERO);
    
    		glBindTexture(GL_TEXTURE_2D, textur[2].get_texture());			//Textur 2 laden
    		glBegin(GL_QUADS);
    			glMultiTexCoord2fARB(GL_TEXTURE1_ARB,0.0f,0.0f); glVertex3d(20,    10,     0);
    			glMultiTexCoord2fARB(GL_TEXTURE1_ARB,1.0f,0.0f); glVertex3d(30,    10,     0);
    			glMultiTexCoord2fARB(GL_TEXTURE1_ARB,1.0f,1.0f); glVertex3d(30,    10,     10);					
    			glMultiTexCoord2fARB(GL_TEXTURE1_ARB,0.0f,1.0f); glVertex3d(20,    10,     10);					
    		glEnd();
    
    		glDisable(GL_TEXTURE_2D);
    		glDisable(GL_BLEND);
    
    	    glEnable(GL_LIGHTING);
    

    Intuitiv denke ich, dass die Durchlässigkeit angegeben wird. Denn unter
    http://wiki.delphigl.com/index.php/GlBlendFunc
    steht

    Der Alpha-Eingangswert (Quelle) kann im Endeffekt als Materialdurchlässigkeit betrachtet werden, reichend von KA = 1, also komplett solide, bis KA=0, was ein komplett transparentes (=unsichtbares) Material darstellen würde.

    Also dachte ich, dass das Material der Quelle (Das zuerst gemalte) wegen GL_ONE als erster Wert in glBlendFunc(GL_ONE,GL_ZERO) total undurchsichtig sein müsste.

    Warum sehe ich aber nun nur die 2. Textur und nicht wie ich dachte nur die erste Textur?


  • Mod

    zweites-bild*ONE+ erstes-bild*ZERO==Zweites bild?


Anmelden zum Antworten