Я не могу найти много информации о том, поддерживается ли рисование из нескольких буферов вершин в OpenGLES 2.0 (т. Е. Используется один буфер вершин для данных о положении и другой для нормалей, цветов и т. Д.). Эта страница http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesforWorkingwithVertexData/TechniquesforWorkingwithVertexData.html и, в частности, листинг 9.4, подразумевают, что вы должны это сделать, но я не могу заставить его работать в моей программе. Код для оскорбительного розыгрыша:
glBindBuffer(GL_ARRAY_BUFFER, mPositionBuffer->openglID);
glVertexAttribPointer(0, 4, GL_FLOAT, 0, 16, NULL);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, mTexCoordBuffer->openglID);
glVertexAttribPointer(1, 2, GL_FLOAT, 0, 76, NULL);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mIndexBuffer->openglID);
glDrawElements(GL_TRIANGLES, 10788, GL_UNSIGNED_SHORT, NULL);
Этот вызов отрисовки будет остановлен или завершится с EXC_BAD_ACCESS на симуляторе и даст очень странное поведение на устройстве (opengl рисует случайные треугольники или представляет ранее визуализированные кадры). Ни один вызов opengl никогда не возвращает ошибку, и я тщательно проверял буферы вершин и уверен, что они имеют правильные размеры и данные.
Кто-нибудь успешно рендерится с использованием нескольких вершинных буферов и может поделиться своим опытом, почему это может не сработать? Будем весьма благодарны за любую информацию о том, с чего начать отладку остановленных / неуспешных вызовов отрисовки, которые не возвращают код ошибки.