ID3DX10Mesh::Intersect 方法

确定光线是否与该网格相交。

语法

HRESULT Intersect(
  [in]  D3DXVECTOR3 *pRayPos,
  [in]  D3DXVECTOR3 *pRayDir,
  [in]  UINT        *pHitCount,
  [in]  UINT        *pFaceIndex,
  [in]  float       *pU,
  [in]  float       *pV,
  [in]  float       *pDist,
  [out] ID3D10Blob  **ppAllHits
);

参数

pRayPos [in]

类型: D3DXVECTOR3*

指向 D3DXVECTOR3 结构的指针,指定光线开始的点。

pRayDir [in]

类型: D3DXVECTOR3*

指向 D3DXVECTOR3 结构的指针,指定光线的方向。

pHitCount [in]

类型: UINT*

光线与网格相交的次数。

pFaceIndex [in]

类型: UINT*

如果 pHit 为 TRUE,则指向最接近光线原点的人脸的索引值的指针。

pU [in]

类型: float*

指向重中心命中坐标的指针,U.

pV [in]

类型: float*

指向重中心命中坐标 V 的指针。

pDist [in]

类型: float*

指向光线交集参数距离的指针。

ppAllHits [out]

类型: ID3D10Blob**

指向 ID3D10Blob 接口的指针,其中包含 D3DX10_INTERSECT_INFO 结构的数组。 这是交集测试中发生的所有命中列表。

返回值

类型: HRESULT

返回值是 Direct3D 10 返回代码中列出的值之一。

备注

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

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

大中心坐标是一般坐标的一种形式。 在此上下文中,使用大中心坐标表示坐标系的变化。 对于笛卡尔坐标为 true,对于偏心坐标则为 true。

大中心坐标根据三角形的顶点定义三角形内的点。 有关 Barycentric 坐标的更深入说明,请参阅 Mathworld 的 Bary 心坐标说明

要求

要求
标头
D3DX10.h

D3DX10.lib

另请参阅

ID3DX10Mesh

D3DX 接口