2009-02-11 59 views
1

我想用立方體貼圖貼圖球體。到目前爲止,我的研究在Google上引發了許多關於使OpenGL自動生成紋理座標的結果,但我想生成自己的座標。用Cube貼圖(不反射貼圖)紋理化球體

給定一個包含以0,0,0爲中心的不完美球體(高度映射的但本質上爲球體)頂點的座標數組,如何爲立方體貼圖生成紋理座標?

回答

6

你是通過GLSL做到這一點嗎?在這種情況下,textureCube接受vec3作爲紋理座標,這是一個球體上的單位矢量。在你的情況下,你可以將你的片段的座標相對於球體的中心,將其歸一化並將其作爲座標傳遞。無需擔心內部表示爲六個二維紋理。

uniform samplerCube cubemap; 
varying vec3 pos; // position of the fragment w.r.t. the center of the sphere 
/* ... */ 
vec4 color = textureCube(cubemap, normalize(pos).stp); 

它在固定管道OpenGL中也是這樣工作的。順便說一下,這裏是座標如何在內部使用:絕對值中的最大座標用於選擇讀取六個紋理中的哪一個(該符號選擇正數或負數)。另兩個座標用於在被最大座標分割後,在選定的地圖中查找紋理元素。

+0

*拍頭*謝謝!我使用普通的C++ atm工作,但是一旦我瞭解了更多信息,最終會轉向GLSL – 2009-02-11 11:15:22