kostenloser Webspace werbefrei: lima-city


Texturen auf Polygonen malen (OpenGL)?

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    krisi12345

    Kostenloser Webspace von krisi12345

    krisi12345 hat kostenlosen Webspace.

    Aus Strategiespielen und Sandboxspielen wo man eigene Maps machen kann kennt man es ja das man verschiedene texturen auf ein Modell malen kann wo es so aussieht das jede Ecke eine eigene textur hat. Aber wie funktioniert das (in OpenGL) genau? Muss man da für jede Textur ne eigene UV Map machen?

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Wie du schon richtig festgestellt hast läuft die Texturierung unter anderem über die UV-Koordinaten der Textur. Dazu gibt man jedem Vertex eine UV Koordinate mit. Die Funktion glTexCoord..() übernimmt das zum Beispiel in einem glBegin/glEnd Block. Natürlich können solche Daten auch in einem Array auf der Grafikkarte als Buffer-Object zwischengespeichert werden. Am besten informierst du dich zu dem Thema mal in einem NeHe-Tutorial wie diesem hier: nehe.gamedev.net/data/lessons/lesson.asp?lesson=06

    Edit:

    So mir ist gerade aufgefallen, dass ich das etwas in den falschen Hals bekommen hab. ^^
    Also das wonach du fragst nennt sich wohl Multitexturing und da wirst du im Web wohl auch einiges an Anleitungen zu finden. Ich selbst habe das Multitexturing noch nicht verwendet (zumindest nicht um Oberflächen damit zu Texturieren) aber ich weiß, dass es dazu einen zusätzlichen Funktionssatz gibt, der sich zb hier finden lässt: www.opengl.org/resources/code/samples/sig99/advanced99/notes/node61.html

    Beitrag zuletzt geändert: 27.6.2010 20:32:04 von sektor
  4. s********4

    Nehe ist alt und nicht mehr konform. Den Code sollte man nicht mehr verwenden, auch wenns mal die besten tuts waren.
    Generell sollte man nur noch über Arrays arbeiten.

    // Push Vertices
        glEnableClientState(GL_VERTEX_ARRAY);       
        glVertexPointer(3, GL_FLOAT, 0, &m_vertices[0]);
    
        // Do Texturing
        if ( m_texture )
        {        
            glEnableClientState(GL_TEXTURE_COORD_ARRAY);
            m_texture->attachTexture();
            const NLTextureCoord* c = m_texture->getTextureCoords();
            glTexCoordPointer(2, GL_FLOAT, 0, &c[0]);       
        }
        
        // Do Coloring
        glEnableClientState(GL_COLOR_ARRAY);
        glColorPointer(4, GL_FLOAT, 0, &m_simple_color[0]);
    
        // Draw Array
        glDrawArrays(m_drawmode, 0, 4);
       
        // Disable everything
        glDisableClientState(GL_VERTEX_ARRAY);
        glDisableClientState(GL_TEXTURE_COORD_ARRAY);
        glDisableClientState(GL_COLOR_ARRAY);

    Etwas aus dem Context gerissen der Code (aus einem Game von mir), aber so schaut das ca. aus. Auf jede Fall ne Menge Stichwörter erstmal.
    Zu Texturen solltest du nach glBindTexture, glGenTexture und glTexImage2D und glTexParameter googlen.
    Dann bitte Detailfragen stellen :).
    rya.
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!