2009-03-25 2 views
3

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

+0

Можете ли вы показать нам, как вы настраиваете его, чтобы он не работал правильно? Есть несколько способов сделать это, поэтому, если мы сможем исправить вашу проблему, вам будет легче, чем вам придется наложить кучу внешнего кода. –

ответ

2

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

0

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

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

8

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

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

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

+0

Ага, я не видел, чтобы исходный вопрос был настолько старым. Так или иначе... – rotoglup

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