私は修正にかなり時間がかかっていたバグがありました。 次の行をコメントするまで、私はEXC_BAD_ACCESSとそれ以上の説明なしでmemmoveエラーへの参照を取得し続けました。GL_ELEMENT_ARRAY_BUFFERを0にバインドするとmemmoveエラーが発生するのはなぜですか?
[self loadShaders];
glGenVertexArraysOES(1, &_vao);
glBindVertexArrayOES(_vao);
// Vertex Buffer
glGenBuffers(1, &_vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(Vertices), Vertices, GL_STATIC_DRAW);
glEnableVertexAttribArray(ATTRIB_VERTEX);
glVertexAttribPointer(ATTRIB_VERTEX, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), 0);
glEnableVertexAttribArray(ATTRIB_TEXTURE);
glVertexAttribPointer(ATTRIB_TEXTURE, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid*) (sizeof(float) * 7));
// Index Buffer
glGenBuffers(1, &_indexBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(Indices), Indices, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER,0);
////////// COMMENTED THIS ONE //////////////
//glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);//
////////////////////////////////////////////
glBindVertexArrayOES(0);
私は0にバッファを結合すると、そのバインド解除意味と思ったので、私は本当にそれが私のアプリのクラッシュをしただろうか理解して傾けます。
ありがとうございました!この関数は取得あなたの属性データを初期化し、いくつかの初期化ルーチン、であるかのように見え、あなたのコードから
const Vertex Vertices[4] = {
{{0.75, -1, 0}, {1, 0, 0, 1}, {0.125, 0.833496}},
{{0.75, 1, 0}, {0, 1, 0, 1}, {0.125, 1}},
{{-0.75, 1, 0}, {0, 0, 1, 1}, {0, 1}},
{{-0.75, -1, 0}, {0, 0, 0, 1}, {0, 0.833496}},
};
const GLushort Indices[6] =
{
0, 1, 2,
2, 3, 0
};
ほとんどの場合、問題はコード内の他の場所にあります。この呼び出しをコメントアウトするだけで、異なる方法で問題が顕在化します。しかし、あなたが投稿したコードを見ると、Verticesの構造には少なくとも9人のフロートメンバーがいるのですか?私はあなたがそれらのうちの5つだけを使用しているのを見るので、ATTRIB_TEXUREに7をオフセットしています(データのために+2)。 –
はい、私はそれもどこか他の場所だと思っていましたが、この単一の行だけで問題は解決しました。私はreallllly理由を理解できません。 thx – Pochi