【问题标题】:What's the best practice when implement scrolling in a 2D GLKit/iOS game?在 2D GLKit/iOS 游戏中实现滚动时的最佳实践是什么?
【发布时间】:2012-08-16 00:56:43
【问题描述】:

我设置了一个不错的场景,一切都渲染得很好,现在我想平移整个世界,类似于我如何使用 scrollToPoint() 调整 UIScrollView 或 CAScrollLayer 的原点。我已经确定我可以不断调整 GLKBaseEffect 上的 projectionMatrix 以改变我看到的内容,但我不确定这是否是适当的做事方式。

在其他代码中,我看到对 glViewport 等的调用,并且 听起来 可能是正确使用的东西,但我不知道这个调用实际上做了什么,所以也许它只是一条红鲱鱼。

做这种事情的典型方法是什么?

【问题讨论】:

    标签: objective-c ios opengl-es opengl-es-2.0 glkit


    【解决方案1】:

    为此,您必须使用转换矩阵。换句话说,投影和视图矩阵是场景中的一种假相机,因此,如果您想滚动场景,则必须将平移变换应用于 World(移动场景中的对象)或 View(移动相机)矩阵。

    我向您推荐这本关于 OpengLS ES 的免费在线书籍:http://ofps.oreilly.com/titles/9780596804824/chmath.html

    【讨论】:

    • 好的,听起来好像在 projectionMatrix 周围移动确实是移动相机的合适方式,对吗?
    • 不完全是,您必须使用视图矩阵。 OpenGLE ES 1 中有三个矩阵 - 模型(或世界)矩阵用于转换世界中的单个节点或对象。视图矩阵用于相对于相机视图转换世界,以便将相机确定的应该可见的对象转换为视锥体。投影矩阵负责“展平”可见截头体并将其拟合到屏幕的设备坐标。
    • 不是每个人都有时间阅读在线书籍,举个例子吧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多