Direct3D 9 (自動產生的紋理座標)
系統可以使用已轉換的相機空間位置或頂點的常態作為紋理座標,也可以計算用來處理立方體環境地圖的三個元素向量。 如同您在頂點中明確指定的紋理座標,您可以使用自動產生的紋理座標作為紋理座標轉換的輸入。
自動產生的紋理座標可以大幅減少幾何資料所需的頻寬,方法是不需要頂點格式的明確紋理座標。 在許多情況下,系統產生的紋理座標可以搭配轉換使用,以產生特殊效果。 當然,這是特殊用途的功能,而且您將針對許多情況使用明確的紋理座標。
設定自動產生的紋理座標
在 C++ 中,D3DTSS_TEXCOORDINDEX紋理階段狀態 (D3DTEXTURESTAGESTATETYPE 列舉類型) 控制系統如何產生紋理座標。
一般而言,此狀態會指示系統使用以頂點格式編碼的特定紋理座標集。 當您在指派給此狀態的值中包含D3DTSS_TCI_CAMERASPACENORMAL、D3DTSS_TCI_CAMERASPACEPOSITION或D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR旗標時,系統行為會相當不同。 如果有任何旗標存在,紋理階段會忽略頂點格式內的紋理座標,而偏好系統產生的座標。 每個旗標的意義會顯示在下列清單中。
D3DTSS_TCI_CAMERASPACENORMAL
使用頂點一般,轉換成相機空間,做為輸入紋理座標。
D3DTSS_TCI_CAMERASPACEPOSITION
使用頂點位置,轉換成相機空間,做為輸入紋理座標。
D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR
使用反射向量,轉換成相機空間,作為輸入紋理座標。 反射向量是從輸入頂點位置和一般向量計算而來。
紋理座標索引旗標互斥。 此範例使用:
- 相機空間 (頂點位置) 做為此紋理階段的輸入紋理座標
- 以D3DRENDERSTATE_WRAP1轉譯狀態設定的包裝模式
// Assume d3dDevice is a valid pointer to an IDirect3DDevice9 interface
d3dDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX,
D3DTSS_TCI_CAMERASPACEPOSITION | 1);
自動產生的紋理座標最適合做為紋理座標轉換的輸入值,或不需要您的應用程式計算三個元素向量進行三次方環境對應。
球體對應會在模型時間使用預先計算的 (,) 紋理對應,其中包含 Chrome 球體所反映的整個環境。 Direct3D 具有紋理座標產生功能,使用轉譯狀態D3DTSS_TCI_CAMERASPACENORMAL,其採用相機空間中頂點的一般,並透過紋理轉換來產生紋理座標。
相關主題