I have an encapsulated VAO that works fine, but the first time I bind it for drawing (not counting creation) I get an INVALID OPERATION error.
Here’s my VBO + VAO creation (in the end of a model loading function)
///Creation du VBO
if(glIsBuffer(m_VBO))
glDeleteBuffers(1, &m_VBO);
glGenBuffers(1, &m_VBO);
glBindBuffer(GL_ARRAY_BUFFER,m_VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(float)*VBO_content.size(), &VBO_content[0], GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER,0);
///Creation du VAO
if(glIsVertexArray(m_VAO))
glDeleteVertexArrays(1, &m_VAO);
glGenVertexArrays(1, &m_VAO);
///REMPLISSAGE
glBindVertexArray(m_VAO);
glBindBuffer(GL_ARRAY_BUFFER, m_VBO);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8*sizeof(float), BUFFER_OFFSET(0));
glEnableVertexAttribArray(0);
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8*sizeof(float), BUFFER_OFFSET(3*sizeof(float)));
glEnableVertexAttribArray(2);
glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, 8*sizeof(float), BUFFER_OFFSET(5*sizeof(float)));
glEnableVertexAttribArray(3);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);
And here is my rendering method for this object
glUseProgram(m_shader.getProgramID());
glBindVertexArray(m_VAO);
if(glGetError())
std::cout << "Binding error : " << __FILE__ << " " << __LINE__ << std::endl;
//Drawing, texture binding etc stuff that works fine, but is after the error
Any idea of what is doing this ?