OpenGL ES 2.0中的第一人称游戏

时间:2013-09-10 13:22:18

标签: opengl-es-2.0

我知道我需要在我正在写的第一人称游戏中使用视锥投影。但是,我不确定在世界上最有效的移动方式是什么。

目前我正在使用

    Matrix.setLookAtM(mVMatrix, 0, eyex, eyey, eyez, lookx, looky, lookz, upx, upy, upz);
    Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mVMatrix, 0);

每次重绘显示。用户输入改变“眼睛”,“外观”位置矢量和“向上”方向矢量。

但是,我在其他地方读过,应该转换/旋转世界而不是“相机”。

我的问题是:我应该围绕固定的“相机”旋转物体(即在设置时只使用setLookAtM一次)还是应该继续使用我当前的方法?

1 个答案:

答案 0 :(得分:1)

在OpenGL中没有称为相机的东西。事实上,你通过移动物体而不是视点来描述的是Opengl在内部实现的内容,让你感觉相机移动。有一篇很棒的文章以及一个描述OpenGL ES 2上所有相机的教程,基本上它与其他版本的逻辑相同:

http://db-in.com/blog/2011/04/cameras-on-opengl-es-2-x/

这可能看起来很无聊和令人困惑,但我一直在搜索OpenGL ES 2上的摄像头,这篇文章对初学者来说几乎是完美的。

要回答您的问题,您当前的方法与您描述的完全相同。相机始终固定在OpenGL中,使用矩阵乘法功能可以提供您想要的效果。将模型矩阵与视图矩阵和投影矩阵相乘时,最后,根据相机参数为对象定义新位置。