共用方式為


自動產生的紋理座標 (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,它會採用相機空間中頂點的一般,並透過紋理轉換來產生紋理座標。

紋理座標處理

紋理座標轉換 (Direct3D 9)

立方環境對應 (Direct3D 9)