|
|
m_pd3dDevice->GetTransform(D3DTS_VIEW,&ViewMatrix);
D3DXMatrixInverse(&m,NULL,&ViewMatrix);
在将 视坐标 转换为 世界坐标过程中,总是得不到准确的值。
GetCursorPos(&point);
//将屏幕坐标转换到客户区坐标
ScreenToClient(m_hWnd,&point);
//得到屏幕坐标 和 宽
sWidth = m_d3dsdBackBuffer.Width;
sHeight = m_d3dsdBackBuffer.Height;
//将客户区坐标 转换 到投影坐标
projPt.x = (point.x - sWidth/2) / sWidth*2;
projPt.y = (point.y - sHeight/2) / sHeight*2;
projPt.z = 0;
m_X = point.x;
m_Y = point.y;
//将投影坐标 转换 到视图坐标
m_pd3dDevice->GetTransform(D3DTS_PROJECTION,& rojMatrix);
DIRView.x = (2*point.x/sWidth-1)/ProjMatrix._11;
DIRView.y = (2*point.y/sHeight-1)/ProjMatrix._22;
DIRView.z = 1;
//将视图坐标 转换到 世界坐标
D3DXMATRIX m;
m_pd3dDevice->GetTransform(D3DTS_VIEW,&ViewMatrix);
D3DXMatrixInverse(&m,NULL,&ViewMatrix);
OriginView.x = m._41;
OriginView.y = m._42;
OriginView.z = m._43;
看看有什么毛病
我是在默认D3D框架的FrameMove函数里做的。 |
|