如何使用OpenGL将体数据渲染成3D纹理?

时间:2016-01-01 02:43:27

标签: c++ opengl 3d volume voxel

我尝试使用GPU将一些3D形状渲染成3D纹理。我正在使用Framebuffer对象来完成此任务。到目前为止,我发现的唯一方法是一次渲染到3D纹理的一个切片(或层)。

例如,如果我想将一个球体绘制到3D纹理,我会将球体的适当横截面绘制到纹理的每一层。

这在小分辨率或少量形状下工作正常,但随着分辨率或复杂度的增加而迅速减慢。

是否有更正确或更快的方法?我定位的是适度旧的硬件,所以我只限于OpenGL 3.x.具体来说,我无法使用此处描述的一些技术:http://www.seas.upenn.edu/~pcozzi/OpenGLInsights/OpenGLInsights-SparseVoxelization.pdf

1 个答案:

答案 0 :(得分:0)

虽然我个人没有这样做,但我知道一个有directX解决方案的例子。它可以移植到OpenGL:https://a248.e.akamai.net/f/248/10/10/http.developer.nvidia.com/GPUGems3/gpugems3_ch01.html参见1.3.2生成密度值

简而言之,进行实例化绘制,并将每个实例定向到纹理的不同层。

您也可以复制所有三角形,并使用几何着色器将它们发送到所有相关切片。