求助:3D坐标转换2D坐标(D3DXVec3Project)

liucl1983 2008-03-18 09:20:13
以下是部分代码,不知道是哪错了,请各位高手指点.
屏幕大小 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这个函数返回的向量应该是结果,但不管怎么做改变,结果都是一样的.
是不是参数不对啊?
...全文
853 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

19,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧