Я делаю 2-проходный рендеринг, где на первом проходе я рендеринг на текстуру, а на втором проходе я рендеринг на экран.
Я рендеринг тех же полигоновв обоих проходах, но я использую разные шейдеры.В частности, второй проход использует шейдер, который принимает текстуру, сгенерированную первым проходом, в качестве параметра.
В настоящее время мой первый проход имеет кадровый буфер с текстурой для цветового вложения и рендер-буфер для вложения глубины (stenciling отключен), в то время как второй проход рендерится с кадровым буфером по умолчанию (0).
Мне пришло в голову, что, поскольку я отрисовываю точно такие же полигоны в pass-2, буфер глубины в конечном итоге будет выглядетьидентичен моему буферу глубины pass-1.Если бы я мог как-то инициализировать начало буфера глубины pass-2 для буфера глубины pass-1, я мог бы затем изменить свою функцию проверки глубины на GL_LEQUAL и избежать много ненужной работы для фрагментного шейдера pass-2.Запись глубины также может быть отключена для этого прохода.
Итак ... есть ли способ сделать одно из следующего?
- создать мой собственный кадровый буфер, который использует буфер глубины экрана(но по-прежнему пишет цвета в текстуру)
- прикрепить свой собственный рендер-буфер к вложению глубины фрейм-буфера по умолчанию
Единственный обходной путь, который я могу придумать (и я еще не пробовал это, поэтому я понятия не имею, какое влияние это окажет на производительность), чтобы второй проход также рендерился в текстуру, а затем был бы третий проход, который просто «перетягивал» текстуру на экран.