OpenGL:glRotatef 不工作?

Posted

技术标签:

【中文标题】OpenGL:glRotatef 不工作?【英文标题】:OpenGL : glRotatef not working? 【发布时间】:2013-07-13 08:32:57 【问题描述】:

glRoatef 函数不起作用我不知道为什么...

下面的代码这是在使用 SDL 的主循环中调用的显示函数:

void display()

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();

GLfloat ambientColor[] = 0.2f, 0.2f, 0.2f, 1.0f;
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientColor);

Control(0.2,0.2,mousein);
drawSkybox(50.0);
UpdateCamera();

renderLine(0,0,0,100,0,0,0,0,255);
renderLine(0,0,0,0,100,0,0,255,0);
renderLine(0,0,0,0,0,100,255,0,0);

我忘了补充说这是不工作的位:

glPushMatrix();
glRotatef(1,0,0,360);
glScalef(0.05,0.05,0.05);
glCallList(ship);
glPopMatrix();

for(int i = 0;i<planets.size();i++)
glPushMatrix();
planets[i].render();
glPopMatrix();

       

在控制功能中,这些旋转起作用。

glRotatef(-camPitch,1.0,0.0,0.0); glRotatef(-camYaw,0.0,1.0,0.0);

Update Camera 也会平移场景 glTranslatef(-camX,-camY,-camZ);

在初始化函数中,这也是我设置相机的方式

glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45,640.0/480.0,0.1,500.0);
    glMatrixMode(GL_MODELVIEW);

【问题讨论】:

定义“不工作”。 glRotatef(1,0,0,360); 行只是乘以一个单位矩阵,基本上什么都不做。您对 360 度旋转有何期待? 我正在测试它是否会在程序中以增量方式旋转它不会旋转 360 度 【参考方案1】:

void glRotatef(GLfloat x, GLfloat y, GLfloat z, GLfloat angle)

void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);

http://www.opengl.org/sdk/docs/man2/xhtml/glRotate.xml

【讨论】:

以上是关于OpenGL:glRotatef 不工作?的主要内容,如果未能解决你的问题,请参考以下文章

使用 glRotatef() 时的 OpenGL 坐标问题

OpenGL/GLUT:glTranslatef 和 glRotatef 在绘制立方体之前还是之后?

OpenGL:glRotatef 旋转啥?

OpenGL glRotatef

opengl glrotatef 无法正确旋转

使用 gl.glrotatef 旋转对象