OpenGL Texturgröße



  • Hi,
    Ich habe mal eine Frage: Ich lade mit

    unsigned int ID = SOIL_load_OGL_texture(fileName, 0, SOIL_FLAG_MIPMAPS);
    

    eine Textur. Ich setze ihre Parameter auf:

    int lastID;
    glGetIntegerv(GL_TEXTURE_BINDING_2D, &lastID);
    
    glBindTexture(GL_TEXTURE_2D, ID);
    
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
    
    glBindTexture(GL_TEXTURE_2D, lastID);
    

    Nun zeichne ich die Textur als Quadrat, wie man das halt macht 😉
    Das Problem ist: Ich bekomme nur irgendeinen Ausschnitt meiner Textur angezeigt... Die Textur liegt als .jpg Datei vor und hat die Größe 500x265 Pixel.
    Danke schon mal im Voraus 😃
    MfG
    DragonRaider



  • Zeig mal die Stelle mit dem Quad zeichnen.



  • Hi,

    void drawTexture()
    {
    glEnable(GL_TEXTURE_2D);
    
    /*Berechnungen*/
    
    wprintf(L"\n");
    for(int i = 0; i < 4; ++i)
      {
      wprintf(L"x: %f, y: %f\n", xPoints[i], yPoints[i]);
      }
    
    wprintf(L"Texture ID: %f, Time: %f\n", iTEX_AREA_1, (fYWDone + fPWDone) * 5);
    Textures.openTexture(iTEX_AREA_1, (fYWDone + fPWDone) * 5);
    wprintf(L"\n");
    
    glColor3f(1.0f, 1.0f, 1.0f);
    
    glBegin(GL_QUADS);
      glTexCoord2f(xPoints[0], yPoints[0]); glVertex2f(xPoints[0], yPoints[0]);
      glTexCoord2f(xPoints[1], yPoints[1]); glVertex2f(xPoints[1], yPoints[1]);
      glTexCoord2f(xPoints[2], yPoints[2]); glVertex2f(xPoints[2], yPoints[2]);
      glTexCoord2f(xPoints[3], yPoints[3]); glVertex2f(xPoints[3], yPoints[3]);
    glEnd();
    
    glDisable(GL_TEXTURE_2D);
    }
    

    Die Ausgabe:

    x: 6.500000, y: 1.500000
    x: 9.500000, y: 1.500000
    x: 9.500000, y: -1.500000
    x: 6.500000, y: -1.500000
    Texture ID: 1.000000, Time: 4.000000
    

    MfG
    DragonRaider5



  • Die Texturkoordinaten, die du übergibst, befinden sich zwischen 0.0 und 1.0.
    0.0, 0.0 steht dabei für die linke untere, 1.0, 0.0 für die rechte untere, 0.0, 1.0 für die linke obere und 1.0, 1.0 für die rechte obere Ecke der Textur. Willst du sie ganz auf dem Quad haben, musst du für die linke untere Ecke des Quads 0.0, 0.0 angeben, für die rechte untere 1.0, 0.0, ....



  • Hi,
    Was macht dann mein glOrtho(-10, 10, 10, -10, 0, 1)?
    MfG
    DragonRaider
    PS.: Die Textur soll auch nur in einem bestimmten Bereich gezeichnet werden.



  • glOrtho verändert die Projektionsmatrix zur Transformation von Vertizen + Normalen, mit den Texturkoordinaten hat dies nichts zu tun.



  • Hi,
    Ah danke 😃 Jetzt hab ichs gescheckt, THX noch mal. Bei glTexCoord2f gibt man also die Coordinaten innerhalb das gezeichneten Quadrats an. Danke noch mal 🙂
    MfG
    DragonRaider


Anmelden zum Antworten