D3DXComputeTangentFrame 函式

計算網格的正切值、二進位和一般向量。

語法

HRESULT D3DXComputeTangentFrame(
  _In_ ID3DXMesh *pMesh,
  _In_ DWORD     dwOptions
);

參數

pMesh [in]

類型: ID3DXMesh*

輸入 ID3DXMesh 網格物件的指標。

dwOptions [in]

類型: DWORD

一或多個 D3DXTANGENT 旗標的組合。

使用 Null 來指定下列選項:

  • 以弧度為單位,依角度加權一般向量長度,由兩個邊緣減去的頂點。
  • 從 UV 紋理座標計算正交笛卡兒座標。
  • 紋理不會以 U 或 V 方向包裝
  • 紋理座標的部分衍生專案會正規化。
  • 頂點會以反時針方向排列在每個三角形周圍。
  • 使用輸入網格中已存在的個別頂點一般向量。
  • 結果會儲存在原始輸入網格中。 如果需要建立新的頂點,函式將會失敗。

傳回值

類型: HRESULT

如果函式成功,傳回值會S_OK。 如果函式失敗,傳回值可以是下列其中一項:D3DERR_INVALIDCALL、D3DXERR_INVALIDDATA E_OUTOFMEMORY。

備註

此函式只會使用下列輸入參數呼叫 D3DXComputeTangentFrameEx

D3DXComputeTangentFrameEx(pMesh, D3DDECLUSAGE_TEXCOORD, 0,   
      D3DDECLUSAGE_BINORMAL, 0, D3DDECLUSAGE_TANGENT, 0, 
      D3DDECLUSAGE_NORMAL, 0, 
      dwOptions | D3DXTANGENT_GENERATE_IN_PLACE,
      NULL, 0.01f, 0.25f, 0.01f, NULL, NULL);

群組邊緣和分割頂點時,會視需要處理單一性。 如果需要分割任何頂點,函式將會失敗。 每個頂點的計算標準向量一律正規化為具有單位長度。

計算正交笛卡兒座標的最強固解決方案是不要設定旗標D3DXTANGENT_ORTHOGONALIZE_FROM_U和D3DXTANGENT_ORTHOGONALIZE_FROM_V,以便從這兩個 UV 紋理座標計算正交座標。 不過,在此情況下,如果 U 或 V 為零,則函式會分別使用D3DXTANGENT_ORTHOGONALIZE_FROM_V或D3DXTANGENT_ORTHOGONALIZE_FROM_U計算正交座標。

規格需求

需求
標頭
D3DX9Mesh.h
程式庫
D3dx9.lib

另請參閱

網格函數

D3DXComputeTangentFrameEx

D3DXTANGENT