Как понимаю один буффер на много лучше разделённых (меньше биндов и указаний видяхе).
|
да, interleaved данные лучше. отдельными буферами можно делать тогда, когда часть данных постоянно заливается с хоста, а часть не меняется. (например позиции/нормали меша какой нибудь тряпки считающейся на цпу в одном буфере, а ее tc в другом, ибо позиции/нормали меняются, а tc нет)
attribute vec3 aVertexPosition : POSITION0;
это реально такой синтаксис в webgl-е или типа хотелки?
в gl3.0+ и gles 3.0 синтаксис таков:
layout (location = N) in vec3 aVertexPosition
по теме:
в акселе использовался один форат вершины на тип геометрии (два на сюрфейс, там данные были либо с двумя tc либо с цветом, в который можно было пропихнуть что нибудь).
т.е. обыные меши одни формат, скиненные другой, спрайтовые системы третий и т.д. при компиляции шейдера все стандартные аттрибуты жестко связывались (glBindAttribLocation).
иногда этого не хватало. и намного чаще буфер был просто жирнее чем нужно. в принципе не смертельно, но все равно неприятно.
в новом движке для меша можно написать свой описатель вершины и в шейдере через layout (location) его использовать. у многих вижу такой подход. мне он кажется более правильным.