Red de conocimiento informático - Aprendizaje de programación - ¿Cómo realiza opengl la rotación de algunos gráficos? Soy principiante y no lo entiendo todo~

¿Cómo realiza opengl la rotación de algunos gráficos? Soy principiante y no lo entiendo todo~

Toda la figura gira a la vez porque glRotate() multiplica todo el sistema de coordenadas por una matriz de rotación. Después de la rotación, cualquier gráfico que dibujes seguirá la rotación. La forma correcta es utilizar glPushMatrix() y glPopMatrix() para controlar la pieza que se va a rotar.

Según su situación, el siguiente es un código simple~~

glPushMatrix(); // Guarde la matriz original (1)

glTranslate3f(. .); // El auto se mueve

DrawBody(); // Dibuja la carrocería del auto

glPushMatrix() // Guarda la matriz actual para asegurar que solo giren las ruedas. (2)

glRotate3f(...); // Girar

DrawWheels(); // Dibujar ruedas

glPopMatrix();

glPopMatrix();

Esto está escrito porque después de transformar glTranslate, glRotate, etc., toda la matriz de transformación cambiará y luego todo lo que se dibuje a continuación sufrirá los cambios correspondientes. Entonces, después de dibujar algo que necesita ser deformado, debes ejecutar glPopMatrix para restaurar la matriz anterior y asegurarte de que los gráficos dibujados más tarde no se vean afectados~

Espero que esto pueda ayudarte~ Si no lo haces No lo entiendo, puedes continuar enviándome mensajes~