004
07.11.2006, 17:19 Uhr
banshee
|
C++: |
int DrawGLScene(GLvoid) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Screen- und Tiefenbuffer leeren glLoadIdentity(); // Identitätsmatrix laden glBindTexture(GL_TEXTURE_2D, texture[0]); // Die Textur auswählen
// Den Hintergrund zeichnen glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); glEnd();
glEnable(GL_BLEND); // Blending aktivieren glDisable(GL_DEPTH_TEST); // Tiefentests deaktivieren
glBlendFunc(GL_DST_COLOR, GL_ZERO); // Die Bildschirm farbe mit schwarz überschreiben
glTranslatef(0.0f, 0.0f, -1.0f); glBindTexture(GL_TEXTURE_2D, texture[1]);
// Textur 2 zeichnen glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.5f,-0.5f, 0.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.5f,-0.5f, 0.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.5f, 0.5f, 0.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f(-0.5f, 0.5f, 0.0f); glEnd();
glBlendFunc(GL_ONE, GL_ONE); glBindTexture(GL_TEXTURE_2D, texture[2]);
// Textur 3 zeichnen glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.5f,-0.5f, 0.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.5f,-0.5f, 0.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.5f, 0.5f, 0.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f(-0.5f, 0.5f, 0.0f); glEnd(); glEnable(GL_DEPTH_TEST); glDisable(GL_BLEND);
return TRUE; }
|
ich hab hier mal ein Code-Beispiel, was leider etwas tut, was es nicht soll. Gezeichnet wird ein Hintergrund auf die aktuelle Fenstergröße, das klappt. Dann soll er mir eine andere Textur auf den Hintergrund zeichnen, was ich hier mit Masken gelöst hab. Textur 2 ist also die Maske für Textur 3. Das Problem ist nur, dass er zusätzlich zur Textur 3 nochmal Textur 1 mitzeichnet. Das heißt ich hab am Ende den Hintergrund, darauf nochmal den Hintergrund (der sich an die Größe der Textur 3 anpasst) und dann die Textur 3. Wenn das zu kompliziert ist, kann ich auch die .exe hochladen... |