|
我把下面这段程序按照我的理解替换成我的程序
例子中的程序:
// Compute the vector of the pick ray in screen space
D3DXVECTOR3 v;
v.x = ( ( ( 2.0f * ptCursor.x ) / m_d3dsdBackBuffer.Width ) - 1 ) / matProj._11;
v.y = -( ( ( 2.0f * ptCursor.y ) / m_d3dsdBackBuffer.Height ) - 1 ) / matProj._22;
v.z = 1.0f;
我的程序:
D3DXVECTOR3 v;
D3DXMATRIXA16 p;
//得到投影矩阵的逆
D3DXMatrixInverse(&p,NULL,&matProj);
v.x = ptCursor.x;
v.y = ptCursor.y;
v.z = 1.0f;
v.x = v.x*p._11 + v.y*p._21 + v.z*p._31;
v.y = v.x*p._12 + v.y*p._22 + v.z*p._32;
v.z = v.x*p._13 + v.y*p._23 + v.z*p._33;
这样后程序不能对多边形进行pick了,是不是我的理解有错误,
另外问一下,投影变换后是否已经是屏幕坐标了,如果是的话,那我的程序应该起作用的啊,我求了投影矩阵的逆,并且乘上去了啊,
很疑惑,请指点,谢谢, |
|