LWJGL只在屏幕上旋转一个对象



我正在尝试旋转屏幕上两个对象中的一个。我该怎么做?我只能让它旋转屏幕上的所有对象。代码:

            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();

到目前为止我有代码。

无休止地调用glRotated而不重置矩阵是个坏主意。舍入误差将累积。您目前没有在每帧调用glIdentity。按以下方式渲染每帧:

  1. 呼叫glIdentity
  2. 绘制第一个四边形
  3. 旋转
  4. 绘制第二个四边形

渲染事物的方式是,两个四边形在三轴上的旋转差仅为十分之一度,这并不明显。

一定要阅读OpenGL,学习OpenGL编程的当前方式,并尝试改进您的代码。看起来你好像不太明白自己在做什么,没有冒犯。

使用glPushMatrix();在您的旋转转换和glPopMatrix()之前;在渲染第二个四边形之后,则只有第二个四方形将受到旋转变换的影响。

最新更新