У меня проблема с VBO, что я действительно не понимаю. Моя проблема решена путем случайного изменения последнего параметра в вызове метода glVertexAttribPointer. Итак, я ищу ответ, как ПОЧЕМУ это неожиданно работает или почему мой предыдущий код больше не работает. (Только, чтобы получить лучшее представление о OpenGL)glDrawElements EXC_BAD_ACCESS с помощью VBO
STRUCT:
typedef struct
{
float position[3];
float color[4];
} Vertex;
Без РВО:
// Get pointers to the data
GLsizei stride = sizeof(Vertex);
const GLvoid *pCoords = &squareVertices[0].position[0];
const GLvoid *pColors = &squareVertices[0].color[0];
// Setup pointers to positions and colors
glVertexAttribPointer(positionSlot, 3, GL_FLOAT, GL_FALSE, stride, pCoords);
glVertexAttribPointer(colorSlot, 4, GL_FLOAT, GL_FALSE, stride, pColors);
// Draw
glDrawArrays(GL_TRIANGLES, 0, sizeof(squareVertices)/sizeof(Vertex));
С РВО (это дает мне EXC_BAD_ACCESS)
// Stide
GLsizei stride = sizeof(Vertex);
// Setup pointers to positions and colors
glVertexAttribPointer(positionSlot, 3, GL_FLOAT, GL_FALSE, stride, 0);
glVertexAttribPointer(colorSlot, 4, GL_FLOAT, GL_FALSE, stride, (GLvoid*) (sizeof(float) * 3));
// Draw
glDrawElements(GL_TRIANGLES, sizeof(squareIndices)/sizeof(squareIndices[0]), GL_UNSIGNED_BYTE, 0);
Итак, единственное, что на самом деле отличается, - это вызов glVertexAttribPointer
, который имел указатель на данные и теперь имеет фиксированные номера. Может ли кто-нибудь уточнить это? Заранее спасибо.
Ничего себе! Это был быстрый андер. Действительно оценен. Cristal clear;) – polyclick