Сообщение от Mr_F_
не совсем понял вопрос. формат модели один, формат вертексного буфера в ней - любой, в этом плане динамика.
|
Ну вот я вижу такой pipeline: есть модель, любой формат, пишем/берём парсер, получаем доступ к данным, position 3, normal (3), color (4), tc(2), ... далее это дело пихаем в буффер.
Тут варианта 2: либо в один буфер, либо по разным буферам., далее когда нужно это дело рендерить, биндим нужный буффер/ы, и далее поинтим участки буффера на аттрибуты в шейдере (vertexAttribPointer), и тут то загвоздка. Что во первых имена переменных зависят от шейдера, во вторых нужно знать что и куда поинтить.
Тут либо мы ставим правила по названию аттрибутов, и если есть данные из формата модели - поинтим, если нет, то пропускаем. Либо мы скидываем это на разработчика, чтобы он сам отвечал за какие данные в буфере куда поинтить (аттрибуты).
Либо мы пишем полностью автономную тему, с define'ами или пропроцессами которыми можем в шейдере метить аттрибуты, что-то типа:
attribute vec3 aVertexPosition : POSITION0;
И как ранее если у модели есть данные, биндим и указываем на них, если нет - пропускаем.
Я думаю над подходом позволяющим следовать лёгким "правилам" и тогда вообще не нужно париться, и при этом возможность не следовать им вообще и самому всё указывать.
Как понимаю один буффер на много лучше разделённых (меньше биндов и указаний видяхе).