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

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

要求

要求
标头
D3DX9Mesh.h

D3dx9.lib

另请参阅

ID3DXPRTEngine

ID3DXPRTEngine::ShadowRayIntersects

ID3DXPRTEngine::SetMinMaxIntersection