so.. I have NO idea why this is throwing an exception, but it's crashing my game whenever I call glDrawArrays. I set everything up correctly, and I've even copied-pasted code from tutorials that show people how to use VBOs, and it goes up to the glDrawArrays, and then crashes. I'm using sf::Renderwindow, and I get the error 0xC0000005: Access violation reading location 0x00000000.
GLuint createVBO(GLfloat* vertices, int size){
GLuint vbo;
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, size*sizeof(GL_FLOAT), vertices, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
return vbo;
}
//init function
glewInit();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, window.getSize().x, window.getSize().y, 0, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_ALPHA_TEST);
glLoadIdentity();
glEnable(GL_TEXTURE_2D);
glLoadIdentity();
glAlphaFunc(GL_GREATER, 0.2f);
glLoadIdentity();
GLfloat *verts = new GLfloat[6];
verts[0] = 100.0f; //Verts at (100, 100), (200, 100), (150, 150)
verts[1] = 100.0f;
verts[2] = 200.0f;
verts[3] = 100.0f;
verts[4] = 150.0f;
verts[5] = 150.0f;
GLuint VertexVBOID = createVBO(verts, 6);
while(running){
glBindBuffer(GL_ARRAY_BUFFER, VertexVBOID);
glEnableClientState( GL_VERTEX_ARRAY );
glVertexPointer(2, GL_FLOAT, 0, BUFFER_OFFSET(0));
glDrawArrays(GL_TRIANGLES, 0, 3);
glBindBuffer( GL_ARRAY_BUFFER, 0 );
glDisableClientState( GL_VERTEX_ARRAY );
window.display();
sf::sleep(sf::milliseconds(16));
}
For anyone who is looking for the answer in the future, my problem was solved from
http://www.sfml-dev.org/old-forum/viewtopic.php?t=7327&sid=c277620601084e8aa0f406a415a6b795. I hadn't disabled some states that SFML had enabled in secrecy. GL_TEXTURE_COORD_ARRAY & GL_COLOR_ARRAY.