2009-07-21 4 views
2

Ich habe einige Probleme beim Zuordnen einer Textur zu einem Dreieck Streifen. Ich glaube, ich verstehe die Texturkoordinaten immer noch nicht ganz.glTexCoordPointer Probleme mit OpenGL ES

Ich habe eine 512x512 Textur, und ich versuche, den 320x64 Teil davon auf einem Dreiecks-Streifen abzubilden.

Hier ist mein Code:

static const Vertex3D bg_vertex [] = 
{ 
    { 0, 0,  0}, { 0, 64,  0}, { 64, 0,  0}, 
    { 64, 64,  0}, {128, 0,  0}, {128, 64,  0}, 
    {192, 0,  0}, {192, 64,  0}, {256, 0,  0}, 
    {256, 64,  0}, {320, 0,  0}, {320, 64,  0} 
}; 

static const GLfloat bg_texcoords [] = 
{ 
    {1.000, 0.000}, {1.000, 0.125}, {0.875, 0.000}, {0.875, 0.125}, {0.750, 0.000}, {0.750, 0.125}, 
    {0.625, 0.000}, {0.625, 0.125}, {0.500, 0.000}, {0.500, 0.125}, {0.375, 0.000}, {0.375, 0.125} 
}; 

glBindTexture (GL_TEXTURE_2D, bg1Texture); 
glEnable(GL_TEXTURE_2D); 

glColor4f (1.0, 1.0, 1.0, 1.0); 
glTexCoordPointer(2, GL_FLOAT, 0, bg_texcoords); 
glVertexPointer(3, GL_FLOAT, 0, &bg_vertex); 
glDrawArrays(GL_TRIANGLE_STRIP, 0, 12); 

Wenn ich den Code ausführen, zeigt es ein verzerrtes Bild von der ursprünglichen Textur auf den Dreiecksstreifen.

Kann mir bitte jemand sagen, was mache ich falsch?

Dank

+0

Sie ein Bild hinzufügen könnte von die resultierende Verzerrung? –

+0

Dies ist das Original 512x512 Bild: http://my-webhost.net/web/starfield_00.png Das Ergebnis: http://my-webhost.net/web/result.png. Das Koordinatensystem ist (0, 0) - (320, 480) von der oberen linken Ecke des Bildschirms. – Istvan

Antwort

3

OK, es funktioniert jetzt, wenn ich die zusätzliche Klammern entfernt von den Texturkoordinaten:

static const GLfloat bg_texcoords [] = 
{ 
    1.000, 0.000, 1.000, 0.125, 0.875, 0.000, 0.875, 0.125, 0.750, 0.000, 0.750, 0.125, 
    0.625, 0.000, 0.625, 0.125, 0.500, 0.000, 0.500, 0.125, 0.375, 0.000, 0.375, 0.125 
}; 

Jetzt bildet sie die Textur perfekt auf den Dreiecken