Original Post
Hello, I just implemented VBOs in my code and I have questions about the performance increase I should expect to get from this. I am rendering a scene with various static objects and 2 characters that are skinned. When I use vertex arrays, I get render times around of about 30ms to 35ms. So I implemented VBOs in the engine to increase the performance of the rendering. I used GL_STATIC_DRAW for everything except the characters, that are using GL_DYNAMIC_DRAW. The performance is satisfying if the characters are not moving as I get render times ranging from 16 to 20ms. Their mesh is not modified by the skinning and thus not re-uploaded to the GPU. But as soon as I make the characters to move, their mesh needs to be re-uploaded to the GPU once for each frame, and I then see a decrease of performance, even worst than when I was using vertex arrays, as I get render times ranging from 40ms to 45ms. The method I am using right now with VBOs is that I keep a copy of all vertex data on the client side, and allocate a VBO and call glBufferData() for each of them. If the vertex gets dirty by skinning, it gets re-uploaded to the GPU using glBufferData(). Thus I am not using glMapBuffer() in my code. Any idea or suggestion about if I am doing something wrong, or if I should proceed some other way to make the performance even better? Thanks for any input, Happy Go Lucky