D3DXIntersectSubset 函式
與指定的網格子集交集指定的光線。 這提供 與 D3DXIntersect類似的功能。
語法
HRESULT D3DXIntersectSubset(
_In_ LPD3DXBASEMESH pMesh,
_In_ DWORD AttribId,
_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介面的指標,代表要測試的網格。 網格必須經過屬性排序。
-
AttribId [in]
-
類型: DWORD
要交集之子集的屬性識別碼。
-
pRayPos [in]
-
類型:const D3DXVECTOR3*
D3DXVECTOR3結構的指標,指定光線開始的位置。
-
pRayDir [in]
-
類型:const D3DXVECTOR3*
D3DXVECTOR3結構的指標,指定光線的方向。
-
pHit [out]
-
類型: BOOL*
BOOL 的指標。 如果光線與網格上的三角形表面交集,這個值將會設定為 TRUE。 否則,這個值會設定為 FALSE。
-
pFaceIndex [out]
-
類型: DWORD*
如果 pHit 為 TRUE,則指向最接近光線原點之臉部的索引值指標。
-
pU [out]
-
類型: FLOAT*
Barycentric 點擊座標 U 的指標。
-
pV [out]
-
類型: FLOAT*
Barycentric 點擊座標 V 的指標。
-
pDist [out]
-
類型: FLOAT*
光線交集參數距離的指標。
-
ppAllHits [out]
-
類型: LPD3DXBUFFER*
D3DXINTERSECTINFO結構的陣列,代表所有點擊,而不只是最接近的點擊數。
-
pCountOfHits [out]
-
類型: DWORD*
從 ppAllHits 傳回之陣列中的元素數目。
傳回值
類型: HRESULT
如果函式成功,傳回值會D3D_OK。 如果函式失敗,傳回值可以是下列值:E_OUTOFMEMORY。
備註
D3DXIntersectSubset函式提供一種方式,讓您瞭解三角形中的點和四周,與三角形的實際位置無關。 此函式會使用下列方程式傳回產生的點:V1 + U (V2 - V1) + V (V3 - V1) 。
平面 V1V2V3 中的任何點都可以以橫心座標 (U、V) 來表示。 參數 U 控制將多少 V2 加權至結果,而參數 V 控制將多少 V3 加權至結果。 最後,[1 - (U + V) ] 的值會控制將多少 V1 加權至結果。
直心座標是一般座標的形式。 在此內容中,使用直方座標代表座標系統中的變更。 笛卡兒座標的 true 對於直心座標則為 true。
直心座標會根據三角形的頂點定義三角形內的點。 如需直心座標的更深入描述,請參閱 Mathworld 的 Barycentric 座標描述。
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|
另請參閱