0

iPad アプリでイライラする安定性の問題が発生しています。iPad 2 では、アプリはクラッシュすることなく正常に動作しますが、iPad 1 では、メモリ使用量が高すぎる場合にシャットダウンするのと同じ方法でランダムにシャットダウンします (アプリはデバイスでの実行を停止し、デバッガーは " Paused」状態になり、コンソール ウィンドウには「(gdb)」と表示されます)。ただし、メモリ割り当ては 5MB 未満であるため、OS によってシャットダウンされないようにするにはどうすればよいかわかりません。

私のアプリは、OpenGLES と RemoteIO オーディオ ユニットを使用してリアルタイムで実行されます。したがって、常に処理されますが、負荷の高いユース ケースではクラッシュは発生しません。

また、デバッガーで実行しない場合、アプリははるかに安定しています。

iOS は、メモリ使用量が多い以外に何らかの理由でアプリをシャットダウンしますか? そして、それらの理由をデバッグして修正できるようにするにはどうすればよいでしょうか?

ありがとう!

編集

クラッシュは、グラフを作成している頂点の数に関連しているように見えますGL_LINE_STRIP。画面上に複数のオブジェクトがあり、それぞれが 2500 の頂点を持つ 1 つのライン ストリップで構成されています。8 個までのオブジェクト (合計頂点数が 20,000 個まで) になると、安定性が不安定になります。

また、ラインストリップをアルファブレンディングしています。

解像度を落とさずにこれを修正する方法はありますか?

4

1 に答える 1

0

私が見つけた解決策には、次の 2 つの部分が含まれていました。

1) 時々、OpenGLES ビューの上にいくつかの UIKit ビューを表示していました。これらのビューが表示されるたびに、すべての OpenGLES レンダリング呼び出しを停止すると、安定するのに役立ちました。

2)glFinish()数回の呼び出しごとに呼び出しを行うことglDrawArrays(GL_LINE_STRIP, ... )も安定に役立ちました。

ライン ストリップのアルファを 1 に変更しても効果はありませんでした。

BOTTOM LINE: Your app can crash with no stack trace or errors when there are (presumably hardware) issues with OpenGLES.

My guess is that the combination of UIKit views with an OpenGLES view, or glDrawArrays calls with large numbers of indices can overload the graphics "buffers" (see last paragraphs here: http://www.songho.ca/opengl/gl_overview.html#flush)

于 2012-03-29T02:35:12.217 に答える