Нормальный задний буфер + рендеринг в глубину текстуры в OpenGL (FBOs)
Вот ситуация: у меня есть текстура, содержащая некоторые значения глубины. Я хочу визуализировать некоторую геометрию, используя эту текстуру в качестве буфера глубины, но я хочу, чтобы цвет был записан в обычный кадровый буфер (т. Е. Кадровый буфер окна).
Как мне это сделать? Я попытался создать FBO и привязать к нему только текстуру глубины (GL_DEPTH_COMPONENT), но это не сработало; ни один из цветов не появился.
1 ответ
Нет, ты не можешь. FBO, к которому вы выполняете рендеринг, может быть как основным, так и закадровым. Вы не можете смешивать их в любом случае.
Вместо этого я бы предложил вам выполнить рендеринг в цветной рендер-буфер, а затем выполнить простую операцию перетаскивания в основной фрейм-буфер.
Edit-1.
В качестве альтернативы, если у вас уже есть глубина в главном FB, вы можете сначала скопировать свою глубину, а затем выполнить рендеринг в основной FB, тем самым экономя видеопамять на дополнительном цветовом буфере рендеринга.
PS Blitting делается через glBlitFramebuffer
, Для того, чтобы заставить его работать, вы должны настроить GL_READ_FRAMEBUFFER
, GL_DRAW_FRAMEBUFFER
и glDrawBuffer() для каждого из них.