Artículo perteneciente a la sección del PakEngine
Hola a todos,
El capitulo de hoy va sobre la rotación de gráficos.
La forma más fácil de aplicar rotaciones en un motor gráfico como el nuestro que se basa en opengl es realizar rotaciones a nivel de opengl. El pequeño problema que hay es que las rotaciones se hacen de la pantalla completa así que tendremos que hacer pequeños trucos para que no sirva para nuestros motor.
1. Deberemos guardar la matriz de transformación como la tenemos.
2. Deberemos desplazar el gráfico a rotar al origen de coordenadas.
3. Rotaremos toda la pantalla.
4. Desplazaremos el gráfico a su posición final.
5. Restauraremos la matriz de transformación de opengl.
Esto en código es tan sencillo como esto:
void DrawObject::Draw(void)
{
int tex,w,h;
int center_x,center_y;
tex = SPRITELIST_GetTexture(id);
w = SPRITELIST_GetWidth(id);
h = SPRITELIST_GetHeight(id);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, tex);
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
if(angle == 0)
{
glBegin(GL_QUADS);
glTexCoord2f( 1.0f, 1.0f); glVertex2i( x + w , y + h );
glTexCoord2f( 0.0f, 1.0f); glVertex2i( x , y + h );
glTexCoord2f( 0.0f, 0.0f); glVertex2i( x , y );
glTexCoord2f( 1.0f, 0.0f); glVertex2i( x + w , y );
glEnd();
}
else
{
center_x = x + w/2 ;
center_y = y + h/2 ;
glPushMatrix();
glTranslatef( center_x, center_y, 0 );
glRotatef( angle , 0, 0, 1 );
glTranslatef( -center_x, -center_y, 0 );
glBegin(GL_QUADS);
glTexCoord2f( 1.0f, 1.0f); glVertex2i( x + w , y + h );
glTexCoord2f( 0.0f, 1.0f); glVertex2i( x , y + h );
glTexCoord2f( 0.0f, 0.0f); glVertex2i( x , y );
glTexCoord2f( 1.0f, 0.0f); glVertex2i( x + w , y );
glEnd();
glPopMatrix();
}
};
Todo el código está subido al svn.
Espero que os sirva y os haya gustado.
Nos vemos
Blog de programación enfocado a estudiantes principiantes de C/C++ en español. Dispone de cursos de todos los niveles y para multitud de usos.
Entradas populares
-
Una pregunta que me hacen en muchas ocasiones es ¿¿qué significa %2?? La respuesta tiene dos acepciones en función de si lo estamos u...
-
<< Ejemplo anterior Artículos Relacionados Ejemplo siguiente >> Hola a todos, ASCII Art es el hecho de hacer di...
-
Articulo perteneciente a : Referencias de programación Hola a todos Os pongo una aportación que a más de uno le irá bien, un resumen de ...
-
Capítulo perteneciente al tutorial de opengl desde cero Hola a todos, Este capítulo tal vez es de lo más complicados de la teoría necesa...
-
<< Ejemplo anterior Artículos Relacionados Ejemplo siguiente >> Hola a todos, El ejercicio de hoy se basa en c...
-
<< Capítulo anterior Artículos Relacionados Capítulo siguiente >> Hola a todos, Este tutorial intenta ser e...
-
<< Capítulo anterior Artículos Relacionados Capítulo siguiente >> Hola a todos... Un compañero vuestro ha...
-
Hola a todos... He aquí la primera entrega "Como crear tu propio motor de videojuegos y no morir en el intento". Antes que nada ...
-
Hola a todos Ya que he recibido un par de mails pidiéndome información sobre SEO, os adjunto unos cuantos trucos que he ido aprendiendo du...
-
<< Capítulo anterior Artículos Relacionados Capítulo siguiente >> El c apitulo de hoy trata sobre las instrucc...
0 comentarios :
Publicar un comentario