1

Я использую отложенный рендер в своей игре. Поэтому первый шаг рендеринга заключается в создании альбедо и нормального буфера с использованием нескольких рендеринговых карт и заполнении буфера глубины. Все эти буферы на самом деле являются текстурами.Как получить доступ к текстуре глубины из других фреймов?

Теперь я хочу получить доступ к буферу глубины из других проходов рендеринга, таким образом, другие фреймбуферы, не изменяя текстуру глубины. Я просто хочу прочитать значения глубины. Для этих проходов я в основном рисую полноэкранные квадратики, и я не хочу, чтобы они обновляли текстуру глубины и гаснули ее до значений глубины 0.

Как прикрепить данную текстуру глубины к другой фреймбуферу и убедиться, что она написана только?

+1

Прикрепите текстуру глубины ко второму FBO. ПРИМЕЧАНИЕ. У меня были проблемы с Linux с некоторыми драйверами ATI. Резерв должен сделать blit, но, надеюсь, это не нужно. – Grimmy

+0

Я предполагаю, что вы имеете в виду * читать * только? – Entalpi

ответ

3

Вы можете просто прикрепить тот же буфер глубины к другим фрейм-буферам (вам нужно сделать это, только если вы хотите использовать глубинные проверки при рисовании ваших легких томов). Отключите запись глубины для этих проходов (glDepthMask(GL_FALSE)). Вы также можете привязать буфер глубины (при условии, что это текстура, а не буфер визуализации), к текстурной единице и прочитать значения глубины из нее в вашем шейдере. Единственное, что вы не можете сделать, это читать и писать из одной и той же текстуры одновременно, но вы все равно не хотите этого делать.

+0

Итак, я могу привязать текстуру типа GL_DEPTH_COMPONENT24 к текстурной единице? Если это так, это было бы решением. – danijar

+0

Это правильно. – GuyRT

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