6

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

有谁知道如何处理这样的事情?

4

1 回答 1

5

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

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

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

于 2013-07-21T17:13:54.677 回答