13

アプリケーションが presentFrameBuffer でクラッシュします (フォアグラウンドで実行中、中断は発生しません)。

最初のフレームでクラッシュするのではなく、しばらく描画すると突然クラッシュします。

再現するための正確な手順はありませんが、特定の描画に関連しているようですが、現在のFrameBufferの直前のエラーチェックを含め、アプリケーションを通じてopenGLエラーが報告されていません。presentFrameBuffer の前に glFinish を追加すると、glFinish でクラッシュします。

EXC_BAD_ACCESS (コード = 1、アドレス = 0x1) でアプリケーションがクラッシュし、他のエラー/ログ/デバッグ情報がない上記のコールスタック。

クラッシュ時に報告されたコールスタックは次のとおりです。

スレッド 1、キュー : com.apple.main-thread

>     #0    0x36871e46 in gpus_ReturnGuiltyForHardwareRestart ()
>     #1    0x36872764 in gpusSubmitDataBuffers ()
>     #2    0x31eae624 in SubmitPacketsIfAny ()
>     #3    0x378a337a in gliPresentViewES ()
>     #4    0x325b6df2 in -[EAGLContext presentRenderbuffer:] ()
>     #5    0x0052986e in EAGLContext_presentRenderbuffer(EAGLContext*, objc_selector*, unsigned int) ()
>     #6    0x000e2a48 in -[EAGLView presentFramebuffer] at /svn/src_svn/GG/iphone/Classes/EAGLView.mm:228
>     #7    0x000e4066 in -[GGViewController drawFrame] at /svn/src_svn/GG/iphone/Classes/GGViewController.mm:504
>     #8    0x3809ab0a in __NSFireTimer ()
>     #9    0x39d36856 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ ()
>     #10   0x39d36502 in __CFRunLoopDoTimer ()
>     #11   0x39d35176 in __CFRunLoopRun ()
>     #12   0x39ca823c in CFRunLoopRunSpecific ()
>     #13   0x39ca80c8 in CFRunLoopRunInMode ()
>     #14   0x39b9333a in GSEventRunModal ()
>     #15   0x3551b288 in UIApplicationMain ()
>     #16   0x000e1bae in main at /svn/src_svn/GG/iphone/main.m:14

誰でもこれについて手がかりを持っていますか?

4

2 に答える 2

14

VAO を使用している場合、これはインデックス バッファー (要素配列バッファー) が頂点バッファー制限 (VBO) を超える頂点を参照していることが原因である可能性があります。

要素配列バッファーは VAO に格納されることに注意してください。そのため、VAO がバインドされている限り、glBindBuffer( GL_ELEMENT_ARRAY_BUFFER ) を呼び出すたびにインデックス バッファーが置き換えられます。シーンの次のオブジェクトに移動するときに VAO のバインドを解除するのを忘れると、の呼び出しの VAO が変更されます。

詳細はこちら: http://www.opengl.org/wiki/Vertex_Specification#Index_buffers

デバッグのヒント: 頂点バッファーのサイズを大きくしすぎると、このクラッシュがグリッチに変わり、XCode の OpenGL ES フレーム キャプチャ ツールで検査できるようになる可能性があります (これには XCode 4.5 と iOS 6 が必要です)。

于 2013-01-17T17:10:37.960 に答える
2

この問題は、GL_TEXTURE1 に glEnableClientState(GL_TEXTURE_COORD_ARRAY) を設定しているが、頂点バッファーに実際のデータを提供していないために発生したようです。

于 2013-01-09T14:46:03.787 に答える