0

我的 iPad 应用程序存在令人沮丧的稳定性问题。在 iPad 2 上,应用程序运行良好,没有崩溃,但在 iPad 1 上,它会随机关闭,就像内存使用率过高时关闭一样(应用程序在设备上停止运行,调试器更改为“暂停”状态,控制台窗口显示“(gdb)”)。但是,内存分配低于 5MB,所以我不知道应该做些什么来防止操作系统关闭我。

我的应用程序使用 OpenGLES 和 RemoteIO 音频单元实时运行。所以它一直在处理,但在繁重的用例中不会发生崩溃。

此外,当不在调试器中运行时,应用程序更加稳定。

除了高内存使用之外,iOS 是否会出于任何原因关闭应用程序?我将如何调试这些原因以便我可以修复它们?

谢谢!

编辑

我发现崩溃似乎与我正在绘制的顶点数有关GL_LINE_STRIP。我在屏幕上有多个对象,每个对象都由一个具有 2500 个顶点的线带组成。一旦我有大约 8 个对象(大约 20,000 个总顶点),稳定性就会变得不稳定。

另外,我正在 alpha 混合线条。

有什么方法可以解决这个问题而不只是放弃我的分辨率?

4

1 回答 1

0

我发现的解决方案涉及两个部分:

1) 我不时在 OpenGLES 视图上显示一些 UIKit 视图。每当显示这些视图时,停止所有 OpenGLES 渲染调用有助于稳定。

2)glFinish()每隔几个电话就打电话glDrawArrays(GL_LINE_STRIP, ... )也有助于稳定。

将线条的 alpha 更改为 1 没有效果。

底线:当 OpenGLES 存在(可能是硬件)问题时,您的应用程序可能会在没有堆栈跟踪或错误的情况下崩溃。

我的猜测是 UIKit 视图与 OpenGLES 视图的组合,或带有大量索引的 glDrawArrays 调用可能会使图形“缓冲区”过载(参见此处的最后一段:http: //www.songho.ca/opengl/gl_overview.html #冲洗

于 2012-03-29T02:35:12.217 回答