ios 8 opengl es 1.1已停产?

时间:2014-09-28 21:18:47

标签: ios opengl-es

我们即将在iOS appstore上推出一个标题,我们最近发现它在iOS 8上无效。游戏加载到黑屏,但其他一切都有效(音乐可以是听到,它会对触摸屏做出反应,显示屏上什么都没有。)

我们的引擎很老,使用的是OpenGL ES 1.1。我现在确信这是问题,因为我已经尝试了另一个(旧的)教程,它呈现黑屏。

我在网上看过有关这方面的任何讨论,但似乎找不到任何东西。有没有人有任何1.1应用程序,他们可以确认已停止工作,或工作?

我现在正在考虑将引擎更新到2.0的任务,考虑到项目的规模,这是一个不小的壮举,而且我们很快就会推出。 Apple没有说什么就放弃对1.1的支持是没有意义的,所以我希望我错了。

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。修复是 - 不是addSubview

//[self.window addSubview:glView]; // this produces black screen on ios8 devices

[self setView: glView];

关于ios8的另一个技巧是对于横向应用此代码

const CGRect r = [[UIScreen mainScreen] bounds];

返回横向屏幕尺寸。对于iOS< 8,它始终是纵向屏幕尺寸。所以现在我对X使用max(x,y),对Y使用min(x,y)。

答案 1 :(得分:1)

好的,我已经取得了一些进展。在回答我的问题时,OpenGL ES 1.1不会停止使用。

我不知道自iOS 8以来发生了什么变化,但肯定有些代码不再起作用了。我已经设法取得了一些进展,通过一个教程替换我的主应用代表和GL Viewcontroller,它现在渲染,虽然在屏幕的一半和倾斜。

所以要确认,1.1很好,这是我的代码的问题。

答案 2 :(得分:1)

我通过将CGFloats更改为GLfloats(这包括CGPoints,因为它们使用CGFloats)修复了此处类似描述的问题。这与OpenGLES 1.1或2.0无关,因为我在两者中都遇到了相同的问题。

问题在于OpenGL是因为CGfloats是32位设备上的float类型,而它们是64位设备上的double类型。提供GLfloats就是为了解决这个问题。苹果还提供GLKVector2来解决32位和64位设备之间的这个问题。