Как визуализировать глубину текстуры в OpenGL? - PullRequest
3 голосов
/ 25 марта 2009

Я работаю над алгоритмом отображения теней и хочу отладить карту глубины, которую он генерирует при первом проходе. Однако текстуры глубины не отображаются должным образом в окне просмотра. Есть ли простой способ отобразить текстуру глубины в виде изображения в оттенках серого, желательно без использования шейдера?

Ответы [ 3 ]

8 голосов
/ 20 мая 2011

Вам может потребоваться изменить параметры текстуры глубины, чтобы отобразить ее в виде уровней оттенков серого:

glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE )
glTexParameteri( GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE )

Затем вы можете обычно использовать текстуру в качестве «нормальной» 2-мерной текстуры в оттенках серого, либо с помощью фиксированной функции, либо с помощью шейдерной униформы «sampler2d».

2 голосов
/ 26 марта 2009

Текстуры глубины (2D) можно использовать как обычную текстуру в оттенках серого. Единственная проблема может заключаться в том, что значения внутри него слишком высоки, и вы видите только белую текстуру. В этом случае поиграйте с плоскостями z-near и -far, которые используются при создании текстуры глубины (или масштабируйте значения с помощью шейдера или, возможно, glTexEnv).

0 голосов
/ 20 мая 2011

Конечно, просто свяжите свою текстуру глубины с вашим любимым текстурным блоком, включите текстурирование и нарисуйте 2D-квад! Вы также можете изменить размер квадрата, чтобы заполнить только часть экрана, чтобы вы могли просматривать карту теней в реальном времени.

OpenGL также имеет функции, которые могут скопировать текстуру в массив для вас. Вы можете сохранить это как изображение и использовать средство просмотра изображений для просмотра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...