【问题标题】:GLKit Rendering and iOS Device Orientation (Face Up / Down)GLKit 渲染和 iOS 设备方向(面朝上/朝下)
【发布时间】:2013-01-01 23:02:01
【问题描述】:

我有一个应用程序,其中包含一些基于 Xcode 4.5.2 的 OpenGL 游戏模板的投影矩阵设置代码。在update 函数中,我通过查询[[UIDevice currentDevice] userInterfaceIdiom] 以及UIDeviceOrientationIsLandscape:UIDeviceOrientationIsPortrait:baseModelViewMatrix 设置适当的z 平移值。这有效地让我可以根据每个设备的方向设置屏幕上呈现的区域的比例。我还从willAnimateRotationToInterfaceOrientation:duration: 调用update,以在运行时为设备的每个方向保持正确的渲染比例。

这一切都很好,但是我注意到当设备面向上或面朝下时,我的场景不会显示,我只看到看起来是空的 GLKView。将设备旋转到垂直于地平面的任何方向,可以将场景恢复到其预期行为。我尝试检查UIDeviceOrientationIsValidInterfaceOrientation:,它似乎应该处理我需要的东西,但没有发现行为有任何差异。

我的猜测是,当检测到方向发生变化时,GLKit 会自动更新 GLKView,但我没有找到任何可能导致这种特定行为的明确答案。有什么想法吗?提前致谢。

【问题讨论】:

    标签: opengl-es-2.0 uiinterfaceorientation glkit uideviceorientation


    【解决方案1】:

    如果您使用 GLKMatrix4MakeLookAt 之类的函数,则需要确保您的查看方向与向上方向不平行。在直接向上或向下看的情况下,您需要将相机的“向上”矢量调整为另一个值,例如 0,0,-1 或 0,0,1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      • 2016-02-05
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多