无法在OpenGL中使用相机移动Foward

Flo*_*oul 0 python opengl camera

我正在尝试使用pyOpenGL,但我无法让相机正常工作.

def Draw():

     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
     glMatrixMode(GL_MODELVIEW)
     glLoadIdentity()

     glRotatef(roty,1,0,0)
     glRotatef(rotx,0,1,0)
     glTranslate(0,0,eyez)

     glPushMatrix()

     glTranslate(0,0,-80)

     glBegin(GL_QUADS)
     glColor(0,1,0)
     glVertex3f(-50,-5,10)
     glVertex3f(-50,50,10)
     glVertex3f(50,50,10)
     glVertex3f(50,-5,10)

     glColor(1,0,0)
     glVertex3f(-50,-5,10)
     glVertex3f(-50,50,10)
     glVertex3f(-50,50,70)
     glVertex3f(-50,-5,70)
     glEnd()

     glPopMatrix()

     glutSwapBuffers()
Run Code Online (Sandbox Code Playgroud)

这些旋转效果很好,但我无法向相机朝向的方向前进.当我修改代码以便能够以这种方式向前移动时,场景将无法正确旋转.如果我回到足够远的地方,将会发生一个圆圈旋转的情况.

Ray*_*oal 5

如果您正在编写一个具有相机移动概念的应用程序(我也想旋转),那么不要在对象上进行操作glRotateglTranslate考虑查看gluLookAt,这样可以让您以相机为中心的方式进行设置,所以说话.

顺便说一下,gluLookAt即使有些人说他们"错过了很多",也会被弃用.如果您希望远离这个不推荐使用的实用程序函数,请参阅此函数的源代码并在CPU上滚动您自己的矩阵.