OpenGL Texturgröße
-
Hi,
Ich habe mal eine Frage: Ich lade mitunsigned 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