D3DXIntersect

来源:互联网 发布:中国停止登月计划 知乎 编辑:程序博客网 时间:2024/06/07 10:22

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]...........

}

原创粉丝点击