As Of now, I'm pushing Vertices and Indices data to their respective buffers all together when I create the Object initially, like this:
glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, VertexCount, &Vertices[0], GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, IndicesCount, &Indices[0], GL_STATIC_DRAW);
But as the size of the vertices array increases, the time needed to bind them increases as well, and I got to the point where I need up to 10 seconds to bind a mesh. Since OpenGL operations cannot be done on another thread,
I've looked into batch rendering (For example this: https://www.youtube.com/watch?v=5df3NvQNzUs) but If I understood correctly It readds the vertices and indices every frame. This is good for animated meshes for example, but I don't think that it is useful for large static meshes (that will not change).
Is there a way to add for example 10 faces with their respective indices to the preexisting buffers every time the render function is called on the main thread?