HRESULT D3DXIntersect(
LPD3DXBASEMESH pMesh, //Mesh to test,要检测的网格模型
CONST D3DXVECTOR3 * pRayPos, //Ray origin,射线的起点
CONST D3DXVECTOR3 * pRayDir, //Ray direction,射线方向
BOOL * pHit, //Did the ray hit or not?,射线是否击中网格
DWORD * pFaceIndex, //Index of triangle which was hit,第一个被击中的面索引
FLOAT * pU, //Barycentric U coordinate of hit,第一个击中点所在三角形的质心坐标U分量
FLOAT * pV, //Barycentric V coordinate of hit,类似上面
FLOAT * pDist, //Distance to hit (from ray origin),原点与击中点距离
LPD3DXBUFFER * ppAllHits, //List of all hits,全部集中的一个数组
DWORD * pCountOfHits //Number of hits,有多少次被击中
);
这里假如我们要获取全部的击中信息,那么我们要对ppAllHits操作,其指向一个击中信息的数组,击中信息的结构体是
struct D3DXINTERSECTINFO {//这些分量的含义同上
DWORD FaceIndex;
FLOAT U;
FLOAT V;
FLOAT Dist;
};
我们可以D3DXINTERSECTINFO *pIntersetInfo=(D3DXINTERSECTINFO *)ppAllHits;
for(int i=0;i<*pCountOfHits;i++)
{
pIntersetInfo[i]...........
}