2009-07-21 10 views
2

J'ai quelques problèmes pour mapper une texture sur une bande triangulaire. Je pense que je ne comprends toujours pas complètement les coordonnées de la texture.Problèmes glTexCoordPointer avec OpenGL ES

J'ai une texture de 512x512, et j'essaye de mapper la partie 320x64 sur une bande triangulaire.

Voici mon 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); 

Quand je lance le code, il affiche une image déformée de la texture originale sur les bandes de triangle. Est-ce que quelqu'un peut me dire ce que je fais mal?

Merci

+0

pourriez-vous ajouter une image de la distorsion résultante? –

+0

Ceci est l'image originale 512x512: http://my-webhost.net/web/starfield_00.png Le résultat: http://my-webhost.net/web/result.png. Le système de coordonnées est (0, 0) - (320, 480) à partir du coin supérieur gauche de l'écran. – Istvan

Répondre

3

OK, il fonctionne maintenant lorsque j'ai enlevé les accolades supplémentaires de la texture Coordonnées:

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 
}; 

Maintenant, elle transforme la texture parfaitement sur les triangles