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
stehtDer 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?
-
zweites-bild*ONE+ erstes-bild*ZERO==Zweites bild?