旋转
这个在之前必须完成三角形或其他的图形。
在顶点函数里加入摄像机。
D3DXVECTOR3 position( 0.0f, 0.0f, -5..0f); //这个是摄像机的坐标
D3DXVECTOR3 target( 0.0f, 0.0f, 0.0f); //这个是摄像机的目标
D3DXVECTOR3 up( 0.0f, 1.0f, 0.0f); //这个是以Y轴为向上方向(一般也以Y轴为上方向)
D3DXMATRIX V;
D3DXMatrixLookAtLH( &V, &position, &target, &up); //LH为向左转,RH为身右转
Device->SetTransform( D3DTS_VIEW, &V);
//设置投影变换
MATRIX proj;
D3DXMatrixPerspectivFovLH( &proj, D3DX_PI * 0.5, (float)Width/(float)Height, 1.0f, 1000.0f) //LH为向左转,RH为身右转
视截体的Y方向的视域张角取为90度, 水平视域的张角由宽除高来决定,近平面的位置为1, 远平面的位置为1000
Device->SetTramsform( D3DTS_PROJECTION, &proj);
//设置渲染器状态
Device->SetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME);
个人觉得这上面的放在设置顶点那个函数为好,因为如果放在渲染函数里,每次渲染都要设置相机的位置这些,感觉更占内存。
把摄像机放好,就在渲染里设置旋转了。
D3DXMATRIX Ry
D3DXMatrixRotation( Ry, 3.14f/4.0f);
Device->SetTransform( D3DTS_WORLD, &Ry);
注意:当要旋转时,顶点格式不能设为 RHW。不然无法渲染。
旋转
这个在之前必须完成三角形或其他的图形。
在顶点函数里加入摄像机。
D3DXVECTOR3 position( 0.0f, 0.0f, -5..0f); //这个是摄像机的坐标
D3DXVECTOR3 target( 0.0f, 0.0f, 0.0f); //这个是摄像机的目标
D3DXVECTOR3 up( 0.0f, 1.0f, 0.0f); //这个是以Y轴为向上方向(一般也以Y轴为上方向)
D3DXMATRIX V;
D3DXMatrixLookAtLH( &V, &position, &target, &up); //LH为向左转,RH为身右转
Device->SetTransform( D3DTS_VIEW, &V);
//设置投影变换
MATRIX proj;
D3DXMatrixPerspectivFovLH( &proj, D3DX_PI * 0.5, (float)Width/(float)Height, 1.0f, 1000.0f) //LH为向左转,RH为身右转
视截体的Y方向的视域张角取为90度, 水平视域的张角由宽除高来决定,近平面的位置为1, 远平面的位置为1000
Device->SetTramsform( D3DTS_PROJECTION, &proj);
//设置渲染器状态
Device->SetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME);
个人觉得这上面的放在设置顶点那个函数为好,因为如果放在渲染函数里,每次渲染都要设置相机的位置这些,感觉更占内存。
把摄像机放好,就在渲染里设置旋转了。
D3DXMATRIX Ry
D3DXMatrixRotation( Ry, 3.14f/4.0f);
Device->SetTransform( D3DTS_WORLD, &Ry);
注意:当要旋转时,顶点格式不能设为 RHW。不然无法渲染。