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 心坐标说明。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|
另请参阅