我已经用 openGL ES 1.1 在 android 上编写了一个简单的程序,它可以绘制 3D 对象并能够在空间中导航。
我想像 3D 游戏中的第一人称相机模式一样向左、向右、向内、向外和向左、向右、向上、向下旋转。(这意味着我想旋转相机/眼睛本身)这是我的绘图部分onDrawFrame(GL10 gl)
:
gl.glLoadIdentity();
gl.glRotatef(lfRt, 0.0f, 1.0f, 0.0f);
gl.glRotatef(upDn, 1.0f, 0.0f, 0.0f);
gl.glTranslatef(X, 0.0f, 0.0f);
gl.glTranslatef(0.0f, Y, 0.0f);
gl.glTranslatef(0.0f, 0.0f, Z);
lfRt 和其他变量决定了我们必须在那里的点。(更详细地说,每个 moveIn() 调用都会在 z 中加上一些常数。其他的逻辑相同)。
现在这是我的困惑。如果我将翻译放在首位,则移动方法可以正常工作(向内、向左等),但旋转是错误的。(整个世界围绕原点旋转)另一方面,如果我先旋转,相机旋转很好,但移动方法不正确。例如 moveIn() 总是在同一行/轴上移动。但我想通过不在 z 轴上移动
我应该怎么办?