glDrawElements Crash

Este es el código "init" de la class Renderer:

glGenBuffers(1,&_idVBO); glGenBuffers(1,&_idEBO); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,_idEBO); glBindBuffer(GL_VERTEX_ARRAY,_idVBO); GLint lUV = glGetAttribLocation(_SID,"inUV"); GLint lPosition = glGetAttribLocation(_SID,"inPosition"); glEnableVertexAttribArray(lPosition); glEnableVertexAttribArray(lUV); glVertexAttribPointer(lUV, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), (GLvoid*)0); glVertexAttribPointer(lPosition, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), (GLvoid*)(3*sizeof(GLfloat))); 

… y esta es la function "flush":

 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,_idEBO); glBindBuffer(GL_VERTEX_ARRAY,_idVBO); glBufferData(GL_ARRAY_BUFFER,_lVBO*sizeof(GLfloat),_pOriginVBO,GL_STATIC_DRAW); glBufferData(GL_ELEMENT_ARRAY_BUFFER,_lEBO*sizeof(GLuint),_pOriginEBO,GL_STATIC_DRAW); glDrawElements(GL_TRIANGLES,6,GL_UNSIGNED_INT,0); 

Los glDrawElements llaman lockings con el código de error c0000005, que es causado por una violación de acceso a la memory, es decir, pointers incorrectos. Pero no entiendo dónde está el problema. ¿Algunas ideas? Gracias por adelantado…

Una (o más) de sus llamadas gl anteriores a glDrawElements no se está transmitiendo información correcta. Entonces, cuando finalmente llega a glDrawElements, falla porque la información no está configurada correctamente. Esto es lo que debo hacer para solucionar ese problema:

Después de cada llamada gl coloque un ChecKGLError(); Aquí está esa function:

 void _CheckGLError(const char* file, int line); #define CheckGLError() _CheckGLError(__FILE__, __LINE__) void _CheckGLError(const char* file, int line) { GLenum err ( glGetError() ); while ( err != GL_NO_ERROR ) { std::string error; switch ( err ) { case GL_INVALID_OPERATION: error="INVALID_OPERATION"; break; case GL_INVALID_ENUM: error="INVALID_ENUM"; break; case GL_INVALID_VALUE: error="INVALID_VALUE"; break; case GL_OUT_OF_MEMORY: error="OUT_OF_MEMORY"; break; case GL_INVALID_FRAMEBUFFER_OPERATION: error="INVALID_FRAMEBUFFER_OPERATION"; break; } std::cout << "GL_" << error.c_str() <<" - " << file << ":" << line << std::endl; err = glGetError(); } return; }