OpenGL - как визуализировать объект в 3D текстуру в виде объемного билборда
Я пытаюсь реализовать объемные рекламные щиты в OpenGL 3.3+, как описано здесь и видео здесь. Проблема, с которой я сейчас сталкиваюсь (довольно простая), заключается в следующем: как эффективно визуализировать 3D-объект в 3D-текстуру (как описано в статье)? Предполагая, что объект может быть сохранен в 256x256x128
создание tex 256*256*128*2
фреймбуферы (потому что сказано, что они должны отображаться дважды на каждой оси: +X,-X,+Y,-Y,+Z,-Z
) было бы безумием и слишком мало текстурных блоков для обработки такого количества текстур, насколько я знаю (не говоря уже о количестве необходимого времени).
У кого-нибудь есть идеи, как бороться с чем-то подобным?
1 ответ
Кусочек трехмерной текстуры может быть непосредственно прикреплен к текущему кадровому буферу. Итак, создайте буфер кадров, 3D текстуру, а затем выполните рендеринг следующим образом:
glFramebufferTexture3D( GL_FRAMEBUFFER, Attachment, GL_TEXTURE_3D,
TextureID, 0, ZSlice );
...render to the slice of 3D texture...
Итак, вам нужен только 1 кадровый буфер, который будет повторяться по количеству Z-слайсов в вашей целевой 3D текстуре.