Je suis capable de dessiner un sprite sur l'écran d'un iPhone, mais quand j'essaye de le faire tourner, je reçois des résultats étranges. Il semble étirer le sprite dans la direction y plus il se rapproche de l'axe des ordonnées (90 et 270 degrés). Il s'affiche correctement en pointant vers le bas les axes x et -x (0 et 180 degrés). Il s'agit essentiellement de cisailler au lieu de tourner. Voici l'essentiel du code (matrice de projection est ortho):OpenGL ES glRotatef performant le cisaillement au lieu de tourner?
glPushMatrix();
glLoadIdentity();
glTranslatef(position.x, position.y, -1.0f);
glRotatef(rotation, 0.0f, 0.0f, 1.0f);
glScalef(halfSize.x, halfSize.y, 1.0f);
vertices[0] = 1.0f;
vertices[1] = 1.0f;
vertices[2] = 0.0f;
vertices[3] = 1.0f;
vertices[4] = -1.0f;
vertices[5] = 0.0f;
vertices[6] = -1.0f;
vertices[7] = 1.0f;
vertices[8] = 0.0f;
vertices[9] = -1.0f;
vertices[10] = -1.0f;
vertices[11] = 0.0f;
glVertexPointer(3, GL_FLOAT, 0, vertices);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glPopMatrix();
Quelqu'un peut-il me expliquer comment résoudre ce problème s'il vous plaît? La taille de demi est juste la moitié de l'étendue x et y de l'image-objet; la suppression de l'appel glScalef ne fait aucune différence.
Voici ma configuration matricielle:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(0, 320, 480, 0, 0.01, 5);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
OK, nous espérons que cette capture d'écran démontrera ce qui se passe:
pourriez-vous montrer votre appel glOrtho? Je me demande si cela pourrait l'influencer. –
qu'est ce que halfSize.x et halfSize.y? Cela arrive-t-il encore si vous supprimez la ligne glScalef? – Goz
Tout semble bien à partir d'ici. Je posterais quelques captures d'écran. –