OpenGL - 如何将对象渲染为3D纹理作为体积广告牌

时间:2013-07-06 16:18:46

标签: opengl 3d-texture

我正在尝试按照here所述在 OpenGL 3.3 + 中实现容量广告牌 和视频here。 我现在面临的问题(非常基本)是:如何将3D对象渲染为3D纹理(如文中所述)高效?假设对象可以存储在256x256x128 tex中创建256*256*128*2帧缓冲区(因为据说它应该在每个轴上渲染两次:+X,-X,+Y,-Y,+Z,-Z)会是疯狂的并且纹理太少据我所知,处理那么多纹理的单位(更不用说所需的时间)。

有没有人知道如何处理类似的事情?

1 个答案:

答案 0 :(得分:4)

可以将一片3D纹理直接附加到当前帧缓冲区。因此,创建一个帧缓冲区,一个3D纹理,然后渲染如下:

glFramebufferTexture3D( GL_FRAMEBUFFER, Attachment, GL_TEXTURE_3D,
                        TextureID, 0, ZSlice );
...render to the slice of 3D texture...

因此,您只需要1个帧缓冲区,它将通过目标3D纹理中的Z切片数量进行迭代。