旋转

来源:互联网 发布:华为手机出现紧急数据 编辑:程序博客网 时间:2024/04/29 00:29

这个在之前必须完成三角形或其他的图形。

 

在顶点函数里加入摄像机。

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。不然无法渲染。

原创粉丝点击