Я пишу визуализатор и нахожусь в точке, чтобы выбрать окончательный способ управления vao/vbo/shader. В Интернете я нашел весьма противоречивую информацию о том, что на самом деле рекомендуется. В настоящее время идея следующая:OpenGL VAO VBO shaders confusion
-Один VBO хранит все ячейки последовательно.
-Per "shader mapping" создает VAO для хранения определенного отображения указателя в VBO. («отображение шейдеров», согласованное во всех разных шейдерах с одинаковыми входами)
затем сортировать объекты по «шейдерному отображению» и визуализировать с помощью смещений в главном VBO, тем самым минимизируя шейдерные и VAO-переключатели. Что-то вроде:
for(shaders by mapping)
bindVAO(); //set pointers
for(shader)
for(entity using shader)
entity.setUniforms();
drawArrays(entity.offset, entity.size);
Так как это будет включать в себя значительное количество рефакторинга я хотел бы спросить, если это решение является оптимальным вообще. Мне также интересно, возможно ли иметь несколько перемежаемых форматов в одном VBO.
* Это решение оптимально вообще * - никто не знает. Вы должны просмотреть его. –
afaik, уменьшающий количество вызовов привязанных васов и программ, так же хорош, как и получается, мне было бы интересно узнать еще несколько экспертных мнений, хотя – BeyelerStudios
thx, тогда я просто попробую. Мне просто интересно, была ли моя общая мысль о VBO/VAO правильной до внедрения. – Teris