GLKit渲染和iOS设备方向(面朝上/下)

时间:2013-01-01 23:02:02

标签: opengl-es-2.0 uiinterfaceorientation glkit uideviceorientation

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

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

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

1 个答案:

答案 0 :(得分:0)

如果您使用的是GLKMatrix4MakeLookAt等功能,则需要确保您的外观方向与向上方向不平行。在直视或向下看的情况下,您需要将相机的“向上”向量调整为另一个值,例如0,0,-1或0,0,1。