OpenGL 在屏幕上渲染之前旋转对象以设置其正确的表面

opengl rotate an object to set its correct face before render on screen

本文关键字:设置 表面 对象 旋转 屏幕 OpenGL      更新时间:2023-10-16

我正在使用 GLM 库通过 opengl 中的 obj 文件加载一个对象,但它在屏幕上颠倒了。此外,我还为用户提供了一种功能,因此他也可以通过鼠标相应地旋转所有对象。例如,缩放和放大并随 Y 轴旋转。

问题是我不知道如何首先旋转物体以根据需要制作其面部。之后我想画这个对象,然后鼠标可以发挥它的作用来旋转它。

我的绘制函数包含以下代码

glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
glTranslatef(m_fPosX, m_fPosY,-m_fZoom);
glRotatef(m_fRotX, 1.0f, 0.0f, 0.0f);//these two for mouse movement
glRotatef(m_fRotY, 0.0f, 1.0f, 0.0f);
glRotated(180,0.0f, 0.0f, -1.0f);
glDisable(GL_TEXTURE_2D);
glColor3f(0.90f,0.90f,0.90f);
glmDraw(m_p3dModel,GLM_SMOOTH | GLM_MATERIAL); 
glPopMatrix();

这里的旋转功能都依赖于鼠标移动,但如果它被颠倒加载,我不知道如何首先让我的对象朝向正确的方向,然后允许它在这个绘制函数中......这意味着我需要在调用此绘制函数之前设置其面。

glRotatef(m_fRotY, 1.0f, 0.0f, 0.0f);

应该是

glRotatef(m_fRotY, 0.0f, 1.0f, 0.0f);

复制/粘贴是许多邪恶之母:o)

对于转换/投影/模型视图教程:检查链接