tollo1400
01.09.2010, 19:40
Hallo zusammen, ich hoffe ihr könnt mir weiterhelfen. Es geht um OpenGL, genauer: Blending Ich beschreibe mal die Symptomatik bevor ich den Code dazu poste. Also, ich würde gerne eine Textur auf ein GL_QUAD mappen, das hab ich auch gemacht :) Die Grafik besteht aus aus den Kanälen RGBA, alles was einen Alphawert unter 1.0 hat soll natürlich entsprechend 'transparent' dargestellt werden. Das klappt auch soweit, der Rest der Grafik wird dabei jedoch von der Farbe überlagert die zuletzt mit glColor() definiert wurde. Könnt ihr mir bitte sagen an was das liegt und wie ich das umgehen kann? Der Code ist nur Auszugsweise, alles wäre einfach zuviel und unübersichtlich :)
unsigned char alphaRawData[] = { [gekürzt] };
glBindTexture(GL_TEXTURE_2D, 13);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, &alphaRawData);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND); // DAS IST DER ÜBELTÄTER!!! // Wie verhindere ich dass diese Farbe hier meine Textur beeinflusst?
glColor4f(1.0, 1.0, 1.0, 1.0);
glEnable(GL_TEXTURE_2D);
glBindTexture (GL_TEXTURE_2D, 13);
glBegin (GL_QUADS);
glTexCoord2f (0.0, 1.0);
glVertex3f([gekürzt]);
glTexCoord2f (1.0, 1.0);
glVertex3f([gekürzt]);
glTexCoord2f (1.0, 0.0);
glVertex3f([gekürzt]);
glTexCoord2f (0.0, 0.0);
glVertex3f([gekürzt]);
glEnd ();
glDisable(GL_TEXTURE_2D);
SwapBuffers();
unsigned char alphaRawData[] = { [gekürzt] };
glBindTexture(GL_TEXTURE_2D, 13);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, &alphaRawData);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND); // DAS IST DER ÜBELTÄTER!!! // Wie verhindere ich dass diese Farbe hier meine Textur beeinflusst?
glColor4f(1.0, 1.0, 1.0, 1.0);
glEnable(GL_TEXTURE_2D);
glBindTexture (GL_TEXTURE_2D, 13);
glBegin (GL_QUADS);
glTexCoord2f (0.0, 1.0);
glVertex3f([gekürzt]);
glTexCoord2f (1.0, 1.0);
glVertex3f([gekürzt]);
glTexCoord2f (1.0, 0.0);
glVertex3f([gekürzt]);
glTexCoord2f (0.0, 0.0);
glVertex3f([gekürzt]);
glEnd ();
glDisable(GL_TEXTURE_2D);
SwapBuffers();