2008-09-19 18 views
6

Tengo un sprite cargado como textura y tengo que animarlo, permitiéndole "mirar" hacia la izquierda o hacia la derecha, esencialmente a veces necesito "voltearlo". Sé que OpenGL tiene una gltranslate que reposiciona un objeto, y glrotate que lo gira. ¿Hay algún método que simplemente lo invierta en un eje? Si no, ¿cómo lograrías esto?¿Cómo puedo voltear un sprite/textura en OpenGLES?

+0

Usted quiere decir girar como si fuera una foto con una pegada a la mitad, y girando a la izquierda y la derecha? ¿O te refieres a darle la vuelta como una carta plegable? – freespace

Respuesta

6

No me he equivocado con los sprites de puntos, pero creo que son texturas. Las texturas tienen matrices de textura, lo que significa que puede usar glTranslatef(), glScalef() y glRotatef() en ellas.

Probaría algo a lo largo de las líneas glScalef(-1,1,1); que cambiaría la coordenada de textura por el eje X.

Como dije, no he jugado con sprites de puntos, pero tampoco me he metido con matrices de texturas. Sin embargo, parecen bastante útiles.

Actualización: Mientras tanto, he jugado con matrices de texturas. De la misma manera que cambias entre matrices de proyección de modelos y matrices de proyección, puedes cambiar a la matriz de texturas; aproximadamente: glMatrixMode(GL_TEXTURE); después del cual puede hacer las operaciones antes mencionadas.

También puedes, simplemente pintar un quad/dos triángulos y hacer con ella :)

0

No se puede hacer esto con los sprites de punto OpenGL; aunque puedes mover el centro del sprite, la forma del mismo siempre está orientada de la misma manera.

Lo que puede hacer es dibujar sus sprites como quads, lo que le permite girar, girar y meterse con ellos de la forma que desee. Hay tutoriales para dibujar manualmente sprites (también conocidos como vallas publicitarias) en NeHe