我正在尝试旋转屏幕上的两个对象中的一个。我该怎么做?我只能让它旋转屏幕上的所有对象。 代码:
glColor3f(1, 0, 0);
glBegin(GL_QUADS);
glVertex3f(0f, 0f, 0f);
glVertex3f(0f, .5f, 0f);
glVertex3f(.5f, .5f, 0f);
glVertex3f(.5f, 0f, 0f);
glEnd();
glRotated(.1, 0f, 1f, 0f);
glRotated(.1, 1f, 0f, 0f);
glRotated(.1, 0f, 0f, 1f);
glBegin(GL_QUADS);
glVertex3f(2f, 0f, 0f);
glVertex3f(2f, .5f, 0f);
glVertex3f(2.5f, .5f, 0f);
glVertex3f(2.5f, 0f, 0f);
glEnd();
我到目前为止的代码。
答案 0 :(得分:1)
无需重置矩阵就无休止地调用glRotated
是一个坏主意。舍入错误将累积。您目前不会每帧调用glIdentity
。以下列方式渲染每个帧:
glIdentity
渲染事物的方式是两个四边形的旋转差异仅为三个轴上的1/10度 - 这是不明显的。
请务必阅读OpenGL,了解当前的OpenGL编程方法并尝试改进代码。看起来好像你不太明白你在做什么,没有冒犯。
答案 1 :(得分:1)
使用glPushMatrix();在旋转变换之前和glPopMatrix();在渲染第二个四边形之后,只有第二个四边形会受到旋转变换的影响。