2013-02-24 149 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