What is the correct way to reset and load new data into GL_ARRAY_BUFFER?
- by Geto
I am using an array buffer for colors data. If I want to load different colors for the current mesh in real time what is the correct way to do it. At the moment I am doing:
glBindVertexArray(vao);
glBindBuffer(GL_ARRAY_BUFFER, colorBuffer);
glBufferData(GL_ARRAY_BUFFER, SIZE, colorsData, GL_STATIC_DRAW);
glEnableVertexAttribArray(shader->attrib("color"));
glVertexAttribPointer(shader->attrib("color"), 3, GL_FLOAT, GL_TRUE, 0, NULL);
glBindBuffer(GL_ARRAY_BUFFER, 0);
It works, but I am not sure if this is good and efficient way to do it. What happens to the previous data ? Does it write on top of it ?
Do I need to call :
glDeleteBuffers(1, colorBuffer);
glGenBuffers(1, colorBuffer);
before transfering the new data into the buffer ?