estoy haciendo un juego de naves geometric war, mi problema es que quiero girar la nave de acuerdo a la posicion en la que esta el mouse para que apunte a este, esta parte ya la tengo hecha,
pero al usar glrotatef para hacer el giro como ya saben no me gira la figura sino todo el plano X Y, mi pregunta es como hago para que solo gire la figura sin alterar el sistema de cordenas.
glRotatef(angulo,0,0,1);
glBegin(GL_TRIANGLES);
glColor3f(0.0f, 1.0f, 0.0f);
glVertex3i(x,y+alto/2 ,0); //la punta
glVertex3i(x-ancho/2,y-alto/2,0);
glVertex3i(x+ancho/2,y-alto/2,0);
glEnd();
este es el codigo de la nave (el glTranslatef esta un poco mas arriba) que como podan ver es un triangulo, X Y es el centro del triangulo y tambien el eje de giro
Usa
Pones glPushMatrix() (guardas la matriz) antes de rotar el objeto y glPopMatrix() (la restauras) cuando termines de dibujar el objeto.
Saludos!
~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~
gracias
ya me funciona perfectamente, pero cual es la diferencia entre glLoadIdentity(); glPopMatrix() glPushMatrix() porque despues de leer algo parece que hacen mas o menos lo mismo detodos modos gracias
glLoadIdentity lo que hace es
glLoadIdentity lo que hace es hacer de la matriz actual la matriz identidad (la hace "nula").
glPushMatrix pone la matriz con la que se está trabajando en el stack (la pila), por lo tanto los cambios que hagas después de llamar a glPushMatrix se harán en otra matriz, y por último glPopMatrix hace el proceso contrario a Push, es decir coge la matriz del stack.