下面是将屏幕上的点转换到3d空间射线,这个其实通过对世界矩阵求反也可以得到
POINT ptCursor;
GetCursorPos( &ptCursor );
ScreenToClient( getMainWnd(), &ptCursor );
D3DXVECTOR3 vScreen((float)ptCursor.x,(float)ptCursor.y,/*0.0f*/viewPort.MaxZ),vOut;
D3DXVec3Unproject(&vOut,&vScreen,&viewPort,&mProj,&mView,&mWorld);
平面的创建和计算射线与平面交点
D3DXPLANE plane;
int index = -1;
D3DXVECTOR3 v1(0.0f,0.0f,0.0f);
D3DXVECTOR3 v2(0.0f,1.0f,0.0f);
D3DXPlaneFromPointNormal( &plane, &v1, &v2 );
D3DXVECTOR3 vMousePt;
D3DXPlaneIntersectLine( &vMousePt, &plane, &cameraPos, &vOut );