Название: FBX + OpenGL Отправлено: Disa от Январь 11, 2013, 17:24 Не совсем Qtшная тема, чисто по графике.
Задача: Загрузка модели в удобном виде из нескольких популярных форматов. Ну поэтому и FBX SDK. Проблема - в SDK есть кучу примеров, хорошо документированных, но они под FFP :( Хотя слава богу не везде glBegin/glEnd и даже есть своя обертка для VBO, хочется (но в силу слабости ума не можется) это все переделать на шейдеры + VAO, чтобы убрать лишний код для VBO + ускорить отрисовку. Если с проблемой замены вызовов glBegin/glEnd на просто засовывание этого всего в вектора проблем особо нет, то вот есть проблемы с местом инициализации шейдеров и их параметров (я все еще плаваю в этих шейдерах). Когда лучше всего вызывать glDrawElement или glDrawArray? После прочтения всех узлов или для каждого узла в отдельности? То же самое касается передачи параметров в шейдеры и вообще все что касается отрисовки. Должна быть возможность, например, выделать нужные участки модели - вот тут собственно сам сабж, для этого делать отдельный шейдер или просто передавать дополнительно цвет выделения? А и еще - я где-то тут мог спороть чушь, в потоке сознания :) Название: Re: FBX + OpenGL Отправлено: Igors от Январь 11, 2013, 18:15 Когда лучше всего вызывать glDrawElement или glDrawArray? После прочтения всех узлов или для каждого узла в отдельности? То же самое касается передачи параметров в шейдеры и вообще все что касается отрисовки. Есть понятие "материал". Напр вот этот узел (нод, группа) имеет такие-то текстуры, реагирует на источники света так-то и.т.п. Соответственно она должна рисоваться отдельно, для нее должны устанавливаться uniform переменные (или, редко, активироваться свой шейдер). Другой нод может иметь уже другой материал. А свалив всю геометрию в кучу мы только и можем отрендеоить все однообразно. Должна быть возможность, например, выделать нужные участки модели - вот тут собственно сам сабж, для этого делать отдельный шейдер или просто передавать дополнительно цвет выделения? Мне хватает базовых возможностей. Напр "выделить полигоны" - ну и рисую их цветом выделения. Или "выделить вертексы" - включаю вертексный цвет. И.т.п. В режиме выделения не требуется phong shading (и значит GLSL шейдер выключен) Название: Re: FBX + OpenGL Отправлено: Disa от Январь 11, 2013, 18:52 Цитировать Есть понятие "материал". Напр вот этот узел (нод, группа) имеет такие-то текстуры, реагирует на источники света так-то и.т.п. Соответственно она должна рисоваться отдельно, для нее должны устанавливаться uniform переменные (или, редко, активироваться свой шейдер). Другой нод может иметь уже другой материал. А свалив всю геометрию в кучу мы только и можем отрендеоить все однообразно. Ну я примерно так и думал. Если я ничего не путаю, то лучше (если не требуется других видов затенения или еще чего-то), то:1) Заводится один шейдер для модели (вертексный и фрагментный) 2) Атрибуты и текстура передается в зависимости от параметров материал 3) Вершины передаются в зависимости от текущего узла (и соответственно вызывается и метод отрисовки). Тогда встает еще один вопрос - если есть, например, альфа блендинг (или что-то где важен порядок отрисовки), то узлы нужно всегда сортировать перед отрисовкой? Цитировать В режиме выделения не требуется phong shading (и значит GLSL шейдер выключен) Не очень понял фразу, что значит шейдер отключен? А как же out fragColor? Название: Re: FBX + OpenGL Отправлено: Igors от Январь 11, 2013, 19:14 1) Заводится один шейдер для модели (вертексный и фрагментный) Ну не только вершины (вертексы) - там хватает чего передавать (нормали, UV и др)2) Атрибуты и текстура передается в зависимости от параметров материал 3) Вершины передаются в зависимости от текущего узла (и соответственно вызывается и метод отрисовки). Тогда встает еще один вопрос - если есть, например, альфа блендинг (или что-то где важен порядок отрисовки), то узлы нужно всегда сортировать перед отрисовкой? Если есть прозрачность то да, и это довольно хлопотно и не совсем надежно. Если же спец эффекты то включается нужный бленд и рисуется еше раз поверх Не очень понял фразу, что значит шейдер отключен? А как же out fragColor? Напр у Вас "достаточно богатая" текстура, и Вы еще и пытаетесь показать какие полигоны выделены. Результатом может быть "очень пестрый попугай". А если части модели не освещены то выделения может и вообще не видно. Так не лучше ли в режиме выделения рисовать просто полигоны выделенным/невыделенным цветами (без текстур, источников света и.т.п.)? Или wireframe (можно поверх нормального рендера)Название: Re: FBX + OpenGL Отправлено: Disa от Январь 11, 2013, 19:33 Теперь вроде все понял, спасибо
|