Nesse ambiente altamente dinâmico, como na cena dos jogos de computador, qual é o sentido de usar VBOs, se os VBOs precisariam ser construídos com base em cada quadro?
Se você estiver reconstruindo os dados do vértice para cada objeto e cada quadro, estará fazendo errado. Ou pelo menos, você provavelmente está fazendo isso de maneira ineficiente.
Mover objetos em uma cena pode e deve geralmente ser feito alterando a matriz de transformação mundial usada para renderizar esse objeto, não alterando os dados do vértice diretamente. A animação esquelética também possui soluções totalmente na GPU. Objetos decomponíveis podem ser renderizados com matrizes de transformação distintas, de forma que apareçam juntas até precisarem ser decompostas e, em seguida, as matrizes são ajustadas para separá-las conforme desejado. Objetos que não são visíveis ou não gerados não precisam ser renderizados, mesmo que seus dados de vértice estejam no cartão de um quadro anterior - eles não precisam que seus buffers sejam destruídos / recriados toda vez que sua visibilidade for alterada.
Você pode me ajudar a entender como tirar praticamente proveito dos VBOs em jogos de computador? Pode haver mais VBOs baseados em vértices (por exemplo, um por um objeto) ou sempre deve haver exatamente exatamente um VBO presente para cada ciclo de desenho?
Você pode ter vários buffers de vértice. Geralmente, você possui um por cada malha / modelo e se refere a essa estrutura de dados de malha / modelo com uma coleção de possivelmente muitos objetos renderizáveis que contêm sua própria matriz de transformação mundial exclusiva. Dessa forma, se você tiver 50 inimigos que usam a mesma malha, precisará dessa malha na memória apenas uma vez. Então você tem 50 estruturas de instância menores e leves que se referem a essa malha e mantêm uma transformação mundial exclusiva usada ao renderizar cada instância.