Показать сообщение отдельно
Старый 07.04.2014, 04:22   #7
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Структура данных в вершинном буфере.

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

Я думаю над подходом позволяющим следовать лёгким "правилам" и тогда вообще не нужно париться, и при этом возможность не следовать им вообще и самому всё указывать.

Как понимаю один буффер на много лучше разделённых (меньше биндов и указаний видяхе).
(Offline)
 
Ответить с цитированием