|
|
以下是部分代码,不知道是哪错了,请各位高手指点.
屏幕大小 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); [em4] |
|