Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Ayuda básica con OpenGL

Iniciado por Sepho, 20 de Noviembre de 2009, 01:27:18 AM

« anterior - próximo »

Sepho

Buenas,

Estoy haciendo un programa para clase en el cual vamos a dibujar 5 objetos, previas transformaciones (escalado, translado y rotación). Tengo implementado casi todo el código, el problema es que me muestra los 5 objetos centrados en el origen... Tengo un método para cada transformación, y cada objeto está guardado en un array de objetos, por lo que se carga un objeto, se transforma y se carga el siguiente, etc... Lo que quiero no es código, sino conceptos xD he estado mirando en internet y no me queda muy claro todo esto... Nos han dicho que tenemos que utilizar las siguientes llamadas en OpenGL:

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
glPopMatrix();

Pero por más que lo he intentado no consigo comprender cómo se tienen que realizar las llamadas a esas funciones... he probado a hacer:

push
transformacion (por ejemplo, rotado)
pop

Y así para cada uno de los tres métodos, pero no consigo que se aplique... ¿Algún alma caritativa me ilumina? xD

Gracias! 0:-)

Shaitan

A ver.
OpenGL es una máquina de estados, en la que en todo momento hay un estado activo. Esto vale para las matrices de transformación (como la Modelview), por lo que en todo momento, tienes una activa.
Si tu vas haciendo transformaciones, estas se encadenan una detrás de otra. Ahora imagina que quieres aplicar una transformación a un objeto, pero que para el siguiente que pintes no quieres aplicarla (el tipico caso de los planetas con satélites, que los satelites totan alrededor de los planetas, etc)
PushMatrix lo que hace es guardar la matriz activa en una pila, para poder usarla después. Popmatrix saca el ultimo elemento de esa pila y lo pone como matriz activa (recuperando las transformaciones que tuvieras en ese momento)

Si haces lo que pones:
push
transformacion
(pintar supongo)
pop

al siguiente elemento que pintes no se le aplicará la transformación ...
Aqui tienes una de las millones de fuentes de informacion que hay en la web:

http://www.cimec.org.ar/~ncalvo/transformaciones_opengl.pdf

<º))))><.·´¯`·.Shaitan´¯`·.¸.·´¯`·._.·






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.