0

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

目前我正在使用

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

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

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

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

4

1 回答 1

1

OpenGL中没有所谓的相机。实际上,您通过移动对象而不是视点来描述的是 Opengl 实际上在内部完成的工作,以使您有相机移动的感觉。有一篇很棒的文章和一个教程描述了所有关于 OpenGL ES 2 上的相机,基本上它在其他版本上是相同的逻辑:

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

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

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

于 2013-09-10T13:47:31.203 回答