Я хочу узнать простейший метод использования vbo в OpenGL... Я попытался запустить несколько примеров, которые работают, но омрачены всей другой информацией, что делает меня действительно запутывающим меня... на данный момент это то, что я есть
GLuint vboId = 0;
const int trisize = (m_tris.size()/2)*3;//m_tris is an index array for verts and normals
GLfloat* vertices = new GLfloat[trisize];
GLfloat* normals = new GLfloat[trisize];
int j=0;
for (int i=0; i<m_tris.size(); i+=2) {
normals[j] = m_normals[m_tris[i+1]*3];
vertices[j++] = m_vertices[m_tris[i]*3];
normals[j] = m_normals[m_tris[i+1]*3+1];
vertices[j++] = m_vertices[m_tris[i]*3+1];
normals[j] = m_normals[m_tris[i+1]*3+2];
vertices[j++] = m_vertices[m_tris[i]*3+2];
} //im pretty sure this loop is right as its what i used before to display mesh correctly without vbo using glVertex3f
glGenBuffersARB(1, &vboId);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vboId);
glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(vertices)+sizeof(normals), 0, GL_STATIC_DRAW_ARB);
glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, sizeof(vertices), vertices);
glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, sizeof(vertices), sizeof(normals), normals);
glVertexPointer(sizeof(vertices), GL_FLOAT, 3, 0);
glNormalPointer(GL_FLOAT, 3, (void*)sizeof(vertices));
в методе рендеринга у меня есть
glDrawArrays(GL_TRIANGLES, 0, this->getTriNum()); //0 is the vboId?
Также у меня есть метод, который выполняется один раз...
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
когда я пытаюсь запустить свой код, я получаю "EXC_BAD_ACCESS"
любые советы о том, что я делаю неправильно... или очень простая реализация vbo была бы очень полезной