1

iOS 5.1 を搭載した iPhone 3GS で OpenGL ES 2.0 プログラムを開発しました。glDrawElementsOpenGl機能を使用しています。

iPhone 3GS では、このコードは正常に返されました。しかし、iOS 6.0.2 を搭載した iPhone 5 では、EXEC_BAD_ACCESS.

どうしてか分かりません。インデックスを指定して glDrawElements を呼び出します。小規模なメッシュ データは iPhone 3gs と iPhone 5 の両方で適切に処理されますが、大規模なメッシュ データは iPhone 5 ではうまく処理されません。

EXEC_BAD_ACCESSgleRunVertexSubmitARM" "にスローされます

ヒントを教えてください。

以下はコードです。助けて。

glEnable(GL_DEPTH_TEST);
glEnableVertexAttribArray(_positionSlot);
glVertexAttribPointer(_positionSlot, 3, GL_FLOAT, GL_FALSE ,0, (void*)&mesh2->vertices[0][0]); // ES 2.0

glEnableVertexAttribArray(_normalSlot);
glVertexAttribPointer(_normalSlot, 3, GL_FLOAT, GL_FALSE ,0, (void*)&mesh->normals[0][0]); // ES 2.0

glDrawElements(GL_TRIANGLES, mesh2->faces.size()*3,GL_UNSIGNED_SHORT, &mesh2->faces[0].indices[0]); // <= Crash in iPhone5.
4

1 に答える 1

0

私はこの問題を解決しました。問題のコードは完璧です。他のソース コードでは、glDisableVertexAttribArray が glEnableVertexAttribArray の後にペアで呼び出されていないことがわかりました。私はそれを修正し、うまく実行します。ありがとうございました。

于 2013-01-19T15:37:38.087 に答える