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

时间:2012-09-05 01:50:41

标签: java 3d rotation 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();

我到目前为止的代码。

2 个答案:

答案 0 :(得分:1)

无需重置矩阵就无休止地调用glRotated是一个坏主意。舍入错误将累积。您目前不会每帧调用glIdentity。以下列方式渲染每个帧:

  1. 致电glIdentity
  2. 绘制第一个四边形
  3. 旋转
  4. 绘制第二个四边形
  5. 渲染事物的方式是两个四边形的旋转差异仅为三个轴上的1/10度 - 这是不明显的。

    请务必阅读OpenGL,了解当前的OpenGL编程方法并尝试改进代码。看起来好像你不太明白你在做什么,没有冒犯。

答案 1 :(得分:1)

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