OpenGl Es 2.0 Texture Mapping Problem



  • Hallo zusammen,

    ich zeichne mit OpenGL ES 2.0 eine Straße (TRIANGLE_STRIP) und versuche eine Textur darauf zu mappen. Als Wrap Methode habe ich repeat gewählt. Ich habe eine schmale Textur mit einem Mittelstreifen. Abhängig von der Länge der Straßensegmente wird die Textur mehrfach pro Segment gezeichnet (1m -> 1 mal, 5m -> 5 mal, usw.).

    Ich habe folgendes Problem: http://www.imagebam.com/image/a948d0426108329
    Ab einer gewissen Länge der Straße wird die Textur falsch dargestellt, so als wenn ich CLAMP_TO_EDGE eingestellt hätte.

    Hier ein Code Ausschnitt:

    ...
        float len = 0;
        QVector<QVector2D> texcoords;
        texcoords.append(QVector2D(0.0, 0.0));
        texcoords.append(QVector2D(0.0, 1.0));
        for (GLubyte i = 0; i < offsets.size(); i++) {
            len += offsets[i];
            texcoords.append(QVector2D(len, 0.0));
            texcoords.append(QVector2D(len, 1.0));
        }
    
        glBindTexture(GL_TEXTURE_2D, m_asphaltTexId);
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_asphaltTex.width(), m_asphaltTex.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, m_asphaltTex.bits());
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    
        f->glVertexAttribPointer(m_aTexCoordLoc, 2, GL_FLOAT, GL_FALSE, 0, texcoords.data());
        f->glEnableVertexAttribArray(m_aTexCoordLoc);
    ...
    

    Gibt es maximale Werte für die UV bzw. ST Koordinaten?
    Hat jemand von euch eine Ahnung was mein Problem sein könnte?

    MfG Okieh



  • Das Problem ist gelöst.

    Für alle Interessierten:
    Es lag daran, dass die Dimension meiner Textur falsch war. Die Länge und Breite müssen immer eine Potenz von 2 aufweisen.

    Mfg Okieh


Anmelden zum Antworten