我有一個錯誤,我花了相當一段時間來修復。 我不斷收到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)。 –
是的,我還認爲它是在別的地方,但只有這一行解決了這個問題,我真的不明白爲什麼,我已經發布了更新與我的結構。 thx – Pochi