Problem mit Materialtextur und Lightmap



  • Hallo,

    ich habe folgendes Problem: Ich habe ein Materialtextur, die als Kacheln auf eine Fläche gerendert werden soll. Die Kachelgröße beträgt ein Zehntel der Fläche. Nun möchte ich über Multitexturing eine Lightmap benutzen. Diese Lightmap soll ebenfalls ein Zehntel der Flächengröße betragen, jedoch möchte ich diese nicht über jede einzelne Kachel legen sondern nur einmal auf der ganzen Fläche an einer bestimmten Position.

    Dies ist mein bisheriger Code:

    glActiveTexture(GL_TEXTURE0); //Materialtextur
            glEnable(GL_TEXTURE_2D);
            glBindTexture(GL_TEXTURE_2D, texture[0]);
            glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
    	    glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE);
    
    //        glPushMatrix();
            glActiveTexture(GL_TEXTURE1); //Lightmap
            glEnable(GL_TEXTURE_2D);
            glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
            glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP); //Nicht umschlagen
    		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);
            glMatrixMode(GL_TEXTURE);
            glLoadIdentity();
            glTranslatef(-1.0f,0.0f, 0.0f);  //Verschiebung der Lightmap um 1 auf der x-Achse
            glBindTexture(GL_TEXTURE_2D, texture[39]);
            glMatrixMode(GL_MODELVIEW);
    //        glPopMatrix();
    
            glBegin(GL_QUADS);  //Fläche
                glNormal3f(0, 1, 0);
      			glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 0.0f);
    			glMultiTexCoord2f(GL_TEXTURE1, 0.0f, 0.0f);
                glVertex3f(0, 0, 0);
                glMultiTexCoord2f(GL_TEXTURE0, 0.0f, 10.0f);  //Textur soll 1/10 der Fläche groß sein
    			glMultiTexCoord2f(GL_TEXTURE1, 0.0f, 10.0f);
                glVertex3f(0, 0, 49);
                glMultiTexCoord2f(GL_TEXTURE0, 10.0f, 10.0f);
    			glMultiTexCoord2f(GL_TEXTURE1, 10.0f, 10.0f);
                glVertex3f(49, 0, 49);
      			glMultiTexCoord2f(GL_TEXTURE0, 10.0f, 0.0f);
    			glMultiTexCoord2f(GL_TEXTURE1, 10.0f, 0.0f);
                glVertex3f(49, 0, 0);
            glEnd();
    
            glActiveTexture(GL_TEXTURE1);
            glDisable(GL_TEXTURE_2D);
    
            glActiveTexture(GL_TEXTURE0);
            glDisable(GL_TEXTURE_2D);
    

    Er projeziert zwar die Lightmap korrekt und auch an der richtigen Position, aber nun wird auch die Materialtextur nicht mehr gekachelt.
    Wie kann ich beides voneinander trennen, dass nur die Materialtextur gekachelt wird? Gibt es noch eine bessere Möglichkeit, eine einzelne Textur mit einer bestimmten Größe und Position auf der Fläche, über eine andere zu legen?

    Dankeschön im Voraus!



  • Da mir leider keiner antworten will... 😞
    Ich kann mir gar nicht vorstellen, dass dieses Problem so schwierig ist. Es muss doch möglich sein einen gekachelten Boden mit Hilfe von Lightmaps zu beleuchten, oder? Wenn ihr zum o.g. Problem keine Lösung wisst, dann könnt ihr mir vielleicht nen Alternativvorschlag machen. Wäre sehr dankbar!



  • IMHO sind deine Texturkoordinaten falsch.

    Bye, TGGC (Der Held lebt!)



  • Kannst du mir bitte genauer sagen, was daran so "falsch" sein soll??


Anmelden zum Antworten