Estou tentando implementar um gráfico de cena e, em todos os artigos que encontrei, há discussões sobre classificação de objetos. Então, você classifica seus objetos por "material", por exemplo. Agora, até que me sentei e comecei a implementá-lo, eu meio que tomei isso como garantido, porque fazia sentido. Mas agora estou me perguntando o que realmente muda a classificação?
No meu mecanismo, tenho um gerente de UBOs, uso-os para armazenar dados que serão compartilhados entre programas, no momento que envolve apenas tempo, matrizes de câmera e projeção e luzes (não me preocupo em gerenciar quais luzes afetam quais objetos ATM).
Agora, para cada modelo, eu tenho que mudar o modelo para uniforme da matriz mundial, nenhuma classificação vai mudar isso. Então é o salto de mudar essa matriz para também definir um material para cada objeto tão ruim?
Lembro- me vagamente de ler em algum lugar que cada vez que você altera algo no pipeline, ele precisa ser liberado e isso pode causar problemas de desempenho. Mas, para cada chamada de desenho, estou configurando um modelo para a matriz mundial, então que sentido faz para se preocupar com isso?
Aliás, existe alguma informação sobre se alterar um uniforme e chamar glBufferSubData é mais (ou menos) caro.