2013-02-24 150 views
1

我在OpenGL中有一个简单的3D立方体(所有边都相同)和3D纹理。我想将3D纹理映射到多维数据集。立方体上的OpenGL 3D纹理

结果应该是一个有颜色的立方体,这样立方体内的每个点都可以从纹理内的对应点获取颜色。这至少是我对3D纹理的解释。

如何做到这一点?我认为用GL_QUADS(6个四边形)制作一个立方体并为每个六边指定一个纹理坐标是行不通的?

我假设我必须制作一个立方体,同时以正确的方式使立方体指定glTexCoord。

回答

2

你所描述的听起来像体素渲染,通常是用光线追踪完成的。

不幸的是,3D纹理不会做你所描述的。虽然3D纹理需要U,V,W来获取每个纹理元素,但OpenGL仍沿着基元的平面绘制。您必须在片段着色器中编写一些光线跟踪代码才能投射到3D纹理中。既然你会有效地进行光线跟踪,那么你可能只需要放置一个平面(非旋转)的单个四边形(更好的是,两个三角形制作一个伪四边形,因为四边形不再使用),并使用光线跟踪材料编写片段着色器代码。

欲了解更多详情,请查看'直接卷呈现'。

+0

谢谢!现在我更好地理解一个3D纹理实际上是什么。 – peeol 2013-02-25 00:07:20

+1

救援映射并不完全是OP所需要的。 OP想要的是“直接体积渲染”,也称为“体积射线投射”。有几种方法可以做到这一点。 – datenwolf 2013-02-25 00:41:43

+0

@datenwolf编辑我的答案,以反映你的建议。 – user515655 2013-02-25 21:34:38