1

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

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

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

4

1 回答 1

0

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

于 2013-02-17T08:07:51.853 回答