Objective c 什么';在2D GLKit/iOS游戏中实现滚动的最佳实践是什么?

Objective c 什么';在2D GLKit/iOS游戏中实现滚动的最佳实践是什么?,objective-c,ios,opengl-es,opengl-es-2.0,glkit,Objective C,Ios,Opengl Es,Opengl Es 2.0,Glkit,我设置了一个很好的场景,所有的东西都渲染得很好,现在我想环游世界,就像我用scrollToPoint()调整UIScrollView或CAScrollLayer的原点一样。我已经确定可以在GLKBaseEffect上不断调整projectionMatrix以改变我看到的内容,但我不确定这是否是正确的方法 在其他代码中,我看到了对glViewport之类的调用,这听起来似乎是应该使用的东西,但我不知道这个调用实际上做了什么,所以可能这只是一个转移注意力的问题 这样做的典型方法是什么?为此,必须使用

我设置了一个很好的场景,所有的东西都渲染得很好,现在我想环游世界,就像我用scrollToPoint()调整UIScrollView或CAScrollLayer的原点一样。我已经确定可以在GLKBaseEffect上不断调整projectionMatrix以改变我看到的内容,但我不确定这是否是正确的方法

在其他代码中,我看到了对glViewport之类的调用,这听起来似乎是应该使用的东西,但我不知道这个调用实际上做了什么,所以可能这只是一个转移注意力的问题


这样做的典型方法是什么?

为此,必须使用变换矩阵。换句话说,投影矩阵和视图矩阵在场景中是一种伪摄影机,因此,如果要滚动场景,必须对世界(移动场景中的对象)或视图(移动摄影机)矩阵应用平移变换


我向您推荐这本关于OpengLS的免费在线书籍:

好的,所以听起来围绕projectionMatrix移动确实是移动相机的合适方式,对吗?不完全正确,您必须使用ViewMatrix。OpenGLE ES 1中有三个矩阵-模型(或世界)矩阵用于变换世界中的单个节点或对象。“视图矩阵”用于相对于摄影机视图变换世界,以便将摄影机确定的可视对象变换为视锥体。投影矩阵负责将可见的平截头体“展平”,并使其与屏幕的设备坐标相匹配。举个例子,不是每个人都有时间阅读在线书籍。