For rendering chunks in a blocky type game, would it be more efficient to just build a static VBO for that chunk, then when the chunk is modified, rebuild that chunk, or would it be better for it to use a dynamic VBO for that chunk, where it is rebuilt every frame, but caching as much data as it can?
Mixture of the two , create a temporary buffer and modify parts of that buffer as required then use buffer_sub_Data to bind to that buffer each time , you are not rebuilding the buffer you are instead editing it. Oh an only call buffersubdata when you modify the data , just use a boolean flag for this.
I decided to make a static VBO for the chunk that is loaded when you are in range of the chunk, but unloaded when it is out of the players range. Sped the game up a lot. Though I will probably use something else if required.