在2D游戏OpenGL中更改相机位置

时间:2013-01-09 19:34:43

标签: opengl-es 2d glulookat

我是初学者在OpenGL中制作游戏。我画了一张地图(这是世界,玩家可以移动),现在我想做,那个相机跟随玩家(玩家在屏幕的中心)。 我做过这样的事情:

GLU.gluLookAt(gl, 
                this.x, this.y, 0,
                this.x, this.y, 1.0f,
                0.0f, 0.0f, 0.0f);

this.x和this.y是玩家的坐标。不幸的是它不起作用:(没有任何反应。 这是2d游戏,所以没有任何等待。

1 个答案:

答案 0 :(得分:1)

你可以通过几种方式做到这一点,但最简单的可能就是调用

gl.glTranslatef( cameraX, cameraY );

在glLoadIdentity调用之后但在渲染帧之前。

glTranslatef具有累积效果,因此场景中的所有内容都将被cameraX和cameraY偏移。

一个问题是,要实现这一点,你需要使用glPushMatrix和glPopMatrix,而不是在渲染每个对象之前调用glLoadIdentity,否则你会丢失相机的翻译。


只是旁注,如果你打算拥有一个巨大的世界,你应该让玩家的位置为0,0并让你的世界移动而不是你的玩家。如果它是一个小游戏不是一个大问题,但是当对象具有非常大的x和y值时,你可能会遇到浮点舍入错误的问题。这可能不是你遇到的事情,但我很高兴知道。