Código
glBindVertexArray(VAOs[0]); glBindBuffer(GL_ARRAY_BUFFER, VBOs[0]); glBufferData(GL_ARRAY_BUFFER,sizeof(vertices),vertices,GL_DYNAMIC_DRAW); glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,2*sizeof(GLfloat),(void*)0);
Entonces a partir de aqui cada vez que hagas esto:
Código
glBindVertexArray(VAOs[0]);
Automaticamente seria como si estuvieras haciendo esto: (Aunque no lo "haces" porque ya esta hecho, solo restauras el buffer que ya esta "hecho")
Código
glBindBuffer(GL_ARRAY_BUFFER, VBOs[0]); glBufferData(GL_ARRAY_BUFFER,sizeof(vertices),vertices,GL_DYNAMIC_DRAW); glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,2*sizeof(GLfloat),(void*)0);
Pero cuando hago varios VAOs y a cada VAO le pongo un VBO, por alguna razon cuando pongo el primer, segundo o tercer VAO y compruebo cual es el VBO actual, se me queda en el ultimo VBO con el que llame al metodo glBindBuffer. ¿Por que? Yo digo algo asi:
Código
glBindVertexArray(VAOs[0]); glBindBuffer(GL_ARRAY_BUFFER, VBOs[0]); glBindVertexArray(VAOs[1]); glBindBuffer(GL_ARRAY_BUFFER, VBOs[1]); glBindVertexArray(VAOs[2]); glBindBuffer(GL_ARRAY_BUFFER, VBOs[2]); glBindVertexArray(VAOs[0]); GLint n; glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &n); std::cout << "VBO ACTUAL: " << n << std::endl;//Imprime VBOs[2] pero deberia imprimir VBOs[0]