我尝试使用GPU将一些3D形状渲染成3D纹理。我正在使用Framebuffer对象来完成此任务。到目前为止,我发现的唯一方法是一次渲染到3D纹理的一个切片(或层)。
例如,如果我想将一个球体绘制到3D纹理,我会将球体的适当横截面绘制到纹理的每一层。
这在小分辨率或少量形状下工作正常,但随着分辨率或复杂度的增加而迅速减慢。
是否有更正确或更快的方法?我定位的是适度旧的硬件,所以我只限于OpenGL 3.x.具体来说,我无法使用此处描述的一些技术:http://www.seas.upenn.edu/~pcozzi/OpenGLInsights/OpenGLInsights-SparseVoxelization.pdf
答案 0 :(得分:0)
虽然我个人没有这样做,但我知道一个有directX解决方案的例子。它可以移植到OpenGL:https://a248.e.akamai.net/f/248/10/10/http.developer.nvidia.com/GPUGems3/gpugems3_ch01.html参见1.3.2生成密度值
简而言之,进行实例化绘制,并将每个实例定向到纹理的不同层。
您也可以复制所有三角形,并使用几何着色器将它们发送到所有相关切片。