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

时间:2012-09-20 10:27:50

标签: c++ opengl rotation glm-math

我正在使用GLM Library通过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();

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

1 个答案:

答案 0 :(得分:1)

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

应该是

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

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

对于转换/投影/模型视图教程:选中link