共用方式為


ID3DXPRTEngine::ClosestRayIntersects 方法

在預先計算的光線傳輸中使用有效率的光線追蹤 (PRT) 模擬,以判斷光線是否與網格交集。 如果找到交集,此方法會傳回最接近網格臉部點擊的索引,而光線和交集點的直心座標。

語法

BOOL ClosestRayIntersects(
  [in]  const D3DXVECTOR3 *pRayPos,
  [in]  const D3DXVECTOR3 *pRayDir,
  [in]        DWORD       *pFaceIndex,
  [out]       FLOAT       *pU,
  [out]       FLOAT       *pV,
  [out]       FLOAT       *pDist
);

參數

pRayPos [in]

類型:const D3DXVECTOR3*

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

pRayDir [in]

類型:const D3DXVECTOR3*

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

pFaceIndex [in]

類型: DWORD*

根據在目前網格前面堆疊所有封鎖網格臉部,指向目前網格第一次點擊之目前網格面的索引指標。

pU [out]

類型: FLOAT*

三角形頂點 0 的直方點擊座標 U 指標。

pV [out]

類型: FLOAT*

三角形頂點 1 的直方點擊座標 V 指標。

pDist [out]

類型: FLOAT*

指向光線上交集點距離的指標。

傳回值

類型: BOOL

如果光線與目前的網格交集,則會傳回 TRUE ;否則會傳回 FALSE

備註

使用 ID3DXPRTEngine::SetMinMaxIntersection 來設定與光線交集的最小和最大距離。

三角形第三個頂點 (頂點 2) 的直心座標為 1 - ( U + V ) 。

這個方法的執行速度比 ID3DXPRTEngine::ShadowRayIntersects慢。 如果不需要交集點的位置,請使用 ID3DXPRTEngine::ShadowRayIntersects

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

規格需求

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

另請參閱

ID3DXPRTEngine

ID3DXPRTEngine::ShadowRayIntersects

ID3DXPRTEngine::SetMinMaxIntersection