DirectX中如何控制物体的移动位置
float x,y是设置初始位置(0.0f,0.0f)
我刚接触DirectX不久,我也不太清楚用什么方法来控制物体的移动,我想从屏幕的中间移动到右上,再到右下,最后回到中心的位置并且停止旋转。但目前我让物体从 (0.0f,0.0f) 移动到 (1.0f,1.0f) 运行时物体直接到(1.0f,1.0f)了,看不到这个移动的过程(红色代码部分)。希望大家帮一下!小弟在此先谢谢了!
VOID SetupMatrices(float x,float y)
{
//控制循环次数
float nx=0.0f,ny=0.0f;
//绕(1,1,1)向量旋转
D3DMXMATRIX matWorld, matWorldX, matWorldY, matWorldZ;
D3DMXMATRIX matTrans;
// 每1000ms旋转一周
UINT iTime = GetTickCount() % 1000;
int ttime=iTime;
float fAngle = iTime * 6.28f;
//旋转
D3DMXMatrixRotationX( &matWorldX, fAngle );
D3DMXMatrixRotationY( &matWorldY, fAngle );
D3DMXMatrixRotationZ( &matWorldZ, fAngle );
//平移
if(x==0.0f && y==0.0f)
{
while(x<=1.0f)
{
x=x+0.02f;
y=y+0.02f;
D3DMXMatrixTranslation(&matTrans,x,y,0.0f);
}
}
D3DMXMatrixMultiply(&matWorld,&matWorldX,&matWorldY);
D3DMXMatrixMultiply(&matWorld,&matWorld,&matWorldZ);
D3DMXMatrixMultiply(&matWorld,&matWorld,&matTrans);
g_pd3dDevice->SetTransform( D3DMTS_WORLD, (D3DMMATRIX*)&matWorld,D3DMFMT_D3DMVALUE_FLOAT );
//设置视野矩阵,指定摄象机(眼睛)所在点,观看的点,以及哪个方向是眼睛的上方以固定摄象机
D3DMXVECTOR3 vEyePt( 0.0f, 5.0f, -5.0f );
D3DMXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
D3DMXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
D3DMXMATRIX matView;
D3DMXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
g_pd3dDevice->SetTransform( D3DMTS_VIEW, (D3DMMATRIX*)&matView, D3DMFMT_D3DMVALUE_FLOAT );
//给需要显示的模型矩阵设置透视变换。通常用pi/4的视界
D3DMXMATRIX matProj;
D3DMXMatrixPerspectiveFovLH( &matProj, D3DMX_PI/4.0f, 1.0f, 1.0f, 100.0f );
g_pd3dDevice->SetTransform( D3DMTS_PROJECTION, (D3DMMATRIX*)&matProj, D3DMFMT_D3DMVALUE_FLOAT );
}
VOID Render()
{
......
SetupMatrices(0.0f,0.0f);
}