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*

指向包含 ppAllHits 数组中条目数的 DWORD 的指针。

返回值

类型: HRESULT

如果函数成功,则返回值D3D_OK。 如果函数失败,则返回值可以是:E_OUTOFMEMORY。

备注

D3DXIntersect 函数提供了一种方法,用于了解三角形中和周围的点,而与三角形的实际位置无关。 此函数使用以下公式返回结果点:V1 + U (V2 - V1) + V (V3 - V1) 。

平面 V1V2V3 中的任何点都可以由条形坐标 (U、V) 表示。 参数 U 控制将多少 V2 加权到结果中,参数 V 控制将多少 V3 加权到结果中。 最后,[1 - (U + V) ] 的值控制将多少 V1 加权到结果中。

Barycentric 坐标是一种常规坐标形式。 在此上下文中,使用条形坐标表示坐标系的变化。 笛卡尔坐标的值为 true,对于单心坐标,则为 true。

Barycentric 坐标根据三角形的顶点定义三角形内的点。 有关条形坐标的更深入描述,请参阅 Mathworld 的 Barycentric 坐标说明

要求

要求 Value
标头
D3DX9Mesh.h

D3dx9.lib

另请参阅

Mesh 函数