求助:3D坐标转换2D坐标(D3DXVec3Project)
以下是部分代码,不知道是哪错了,请各位高手指点.
屏幕大小 800 600
a点坐标是100 100 100
得到的b怎么会是400 300呢?而且不管我怎么改变a点的坐标或者摄象机的位置,得到的结果是一样的
D3DXMATRIXA16 matWorld;
D3DXMatrixIdentity(&matWorld);
g_pd3dDevice->SetTransform(D3DTS_WORLD,&matWorld);
D3DXVECTOR3 vEyePt(0.0f, 0.0f, -5.0f); //摄像机的位置
D3DXVECTOR3 vLookPt(0.0f, 0.0f, 0.0f); //观察点的位置
D3DXVECTOR3 vUpVec(0.0f, 1.0f, 0.0f);
D3DXMATRIXA16 matView;
D3DXMatrixLookAtLH(&matView,&vEyePt,&vLookPt,&vUpVec);
g_pd3dDevice->SetTransform(D3DTS_VIEW,&matView);
D3DXMATRIXA16 matProj;
D3DXMatrixPerspectiveLH(&matProj,D3DX_PI/4,1.0f,1.0f,100.0f);
g_pd3dDevice->SetTransform(D3DTS_PROJECTION,&matProj);
D3DVIEWPORT9 viewPort = {0,0,800,600,0.0f,1.0f};
g_pd3dDevice->SetViewport(&viewPort);
D3DXVECTOR3 a,b;
a = D3DXVECTOR3(100,100,100);
D3DXVec3Project(&b,&a,&viewPort,&matProj,&matView,&matWorld);
D3DXVec3Project这个函数返回的向量应该是结果,但不管怎么做改变,结果都是一样的.
是不是参数不对啊?