共用方式為


D3DXIntersect 函式

判斷光線是否與網格交集。

語法

HRESULT D3DXIntersect(
  _In_        LPD3DXBASEMESH pMesh,
  _In_  const D3DXVECTOR3    *pRayPos,
  _In_  const D3DXVECTOR3    *pRayDir,
  _Out_       BOOL           *pHit,
  _Out_       DWORD          *pFaceIndex,
  _Out_       FLOAT          *pU,
  _Out_       FLOAT          *pV,
  _Out_       FLOAT          *pDist,
  _Out_       LPD3DXBUFFER   *ppAllHits,
  _Out_       DWORD          *pCountOfHits
);

參數

pMesh [in]

類型: LPD3DXBASEMESH

ID3DXBaseMesh介面的指標,代表要測試的網格。

pRayPos [in]

類型:const D3DXVECTOR3*

D3DXVECTOR3結構的指標,指定光線開始的位置。

pRayDir [in]

類型:const D3DXVECTOR3*

D3DXVECTOR3結構的指標,指定光線的方向。

pHit [out]

類型: BOOL*

BOOL 的指標。 如果光線與網格上的三角形臉部交集,此值將會設定為 TRUE。 否則,此值會設定為 FALSE

pFaceIndex [out]

類型: DWORD*

如果 pHit 為 TRUE,則表示最接近光線來源之臉部的索引值指標。

pU [out]

類型: FLOAT*

直方點擊座標 U 的指標。

pV [out]

類型: FLOAT*

直方點擊座標 V 的指標。

pDist [out]

類型: FLOAT*

光線交集參數距離的指標。

ppAllHits [out]

類型: LPD3DXBUFFER*

ID3DXBuffer物件的指標,其中包含D3DXINTERSECTINFO結構的陣列。

pCountOfHits [out]

類型: DWORD*

DWORD 的指標,其中包含 ppAllHits 陣列中的專案數。

傳回值

類型: HRESULT

如果函式成功,傳回值會D3D_OK。 如果函式失敗,則傳回值可以是:E_OUTOFMEMORY。

備註

D3DXIntersect函式可讓您瞭解三角形中和四周的點,與三角形實際位於何處無關。 此函式會使用下列方程式傳回結果點:V1 + U (V2 - V1) + V (V3 - V1) 。

平面 V1V2V3 中的任何點都可以以橫條座標表示, (U,V) 。 參數 U 可控制將多少 V2 加權至結果,而參數 V 會控制將多少 V3 加權至結果。 最後,[1 - (U + V) ] 的值會控制 V1 的加權結果。

直心座標是一般座標的形式。 在此內容中,使用直方座標代表座標系統中的變更。 笛卡兒座標組于直方座標保留 true 的內容。

直心座標會根據三角形頂點定義三角形內的點。 如需直心座標的更深入描述,請參閱 Mathworld 的 Barycentric 座標描述

規格需求

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

另請參閱

網格函數