如何旋转OpenGL以适合iPhone横向模式?

时间:2010-11-30 21:05:55

标签: iphone c++ opengl-es

我正在移植我在C ++中使用现有的跨平台程序以及在iPhone上使用OpenGL / ES。请记住,我对Objective-C一无所知......

我刚刚编辑了其中一个教程的Objective-C文件,以便为iPhone正确初始化OpenGL,并简单地为其他所有内容调用我的C ++多平台代码。

我的程序只能在横向模式下运行,这就是为什么我将它设置为唯一受支持的界面方向(在info.plist文件中)。

我想知道的是我应该如何根据横向模式告诉OpenGL旋转。目前我已经添加了一个glRotate,可以在draawing之前完成它,但这是一个肮脏的技巧。

另一件事:我尝试将触摸转换为与另一种快速方法等效的鼠标点击坐标,并且我得到一个位于X轴上80像素和Y轴上80像素的点。我添加了另一个脏修复(使用GlTranslatef)到这个混乱,我得到正确的坐标,除了...颜色选择被打破。

要清楚的是,颜色挑选在左边的160个第一个像素上没有检测到任何东西(这是2 * 80和480 - 320,所以,是啊,99%的可能性是由我的脏代码引起的... )

处理这个问题的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您不必在横向模式下使用OpenGL。我怀疑你实际上并没有进入横向模式。您需要在视图控制器中覆盖shouldAutoRotateToInterfaceOrientation:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
    return orientation == UIInterfaceOrientationLandscapeLeft; // Or ...Right
}

要验证它是否正常工作,请在视图的角落放置一些随机控件(例如,空按钮),使用Interface Builder处于横向模式,并查看它们弹出的位置。

答案 1 :(得分:0)

在iPhone 3G上,这是一个坏主意。使用shouldAutoRotateToInterfaceOrientation旋转使用OpenGL硬件来执行此操作,因此最好在OpenGL代码中使用旋转。如果您没有性能问题,请保持简单。