下面是将屏幕上的点转换到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 );