2010-06-11 2 views
0

Я постараюсь сохранить это просто.Получение нормальной информации из вывода рендеринга OpenGL

Я хочу, чтобы получить доступ к нормальной информации о сцене из вывода буфера кадров (или аналогичного). Точно так же можно получить доступ к буфере глубины, используя glGetTexImage и GL_DEPTH_COMPONENT.

Я знаю, что могу настроить фрагментарный шейдер, который выводит обычную информацию в цветовое пространство RGB, которое, в свою очередь, можно считывать с визуализированного изображения. Однако мне интересно, есть ли способ сделать это в API OpenGL.

Я поясню ничего по запросу, как лучше всего, как я могу, Спасибо

ответ

1

Вы уже знаете решение: Рендер нормальный, как RGB. Нет встроенного обычного буфера, который вы могли бы использовать. Если вы не хотите дважды отображать свою сцену, используйте объекты фреймбуфера (FBO) с несколькими объектами рендеринга (MRT). Затем вы можете записать как цвет, так и нормальный в отдельные текстуры в вашем шейдере фрагмента.

+0

Спасибо. Я надеялся на какое-то расширение для openGL, которое помещает нормальный цвет как вывод цвета из шейдера фрагмента. Однако, изучив некоторые GLSL, это было непросто сделать сам. Поэтому спасибо за разъяснение. Я не думаю, что мне понадобится FBO | MRT, так как это для целей моделирования/исследований, и мне не нужны нормали в каждом кадре. Тем не менее, приятно знать, где можно улучшить скорость, если это необходимо. – swalog

Смежные вопросы