首页 > 代码库 > DirectX11 学习笔记2 - 添加按键事件 实现视角平移 旋转
DirectX11 学习笔记2 - 添加按键事件 实现视角平移 旋转
在上一个程序的基础上。在基类D3DBase添加一个摄像机函数
//摄像机 void D3DBase::setCamera() { //按键事件 //如果A,S,D,W,Q,E,Z,X,C键按下,移动摄像机 if(GetAsyncKeyState('W') & 0x8000) //前 vZ+=0.001f; if(GetAsyncKeyState('S') & 0x8000) //后 vZ-=0.001f; if(GetAsyncKeyState('A') & 0x8000) //左 vX-=0.001f; if(GetAsyncKeyState('D') & 0x8000) //右 vX+=0.001f; if(GetAsyncKeyState('Q') & 0x8000) //上 vY+=0.001f; if(GetAsyncKeyState('E') & 0x8000) //下 vY-=0.001f; //旋转 if(GetAsyncKeyState('Z') & 0x8000) //x轴 rX+=0.001f; if(GetAsyncKeyState('X') & 0x8000) //y轴 rY+=0.001f; if(GetAsyncKeyState('C') & 0x8000) //z轴 rZ+=0.001f; // 世界矩阵 g_World = XMMatrixIdentity(); // 观察矩阵 XMVECTOR Eye = XMVectorSet( 0.0f+vX, 1.0f+vY, -5.0f+vZ, 0.0f ); XMVECTOR At = XMVectorSet( 0.0f+vX, 1.0f+vY, 0.0f, 0.0f ); XMVECTOR Up = XMVectorSet( 0.0f, 1.0f, 0.0f, 0.0f ); g_View = XMMatrixLookAtLH( Eye, At, Up ); g_View*=XMMatrixRotationX(rX)*XMMatrixRotationY(rY)*XMMatrixRotationZ(rZ); // 投影矩阵 g_Projection = XMMatrixPerspectiveFovLH( XM_PIDIV2, width / (FLOAT)height, 0.01f, 100.0f ); }以下写在类声明里面public:
D3DBase():vX(0),vY(0),vZ(0),rX(0),rY(0),rZ(0){};//初始化 float vX,vY,vZ;// 观察矩阵 Eye的坐标 float rX,rY,rZ;// 旋转的角度
然后直接在渲染函数调用即可
//渲染 void D3DProgam::Render() { setCamera();//这里 // Update our time static float t = 0.0f; if( g_driverType == D3D_DRIVER_TYPE_REFERENCE ) { t += ( float )XM_PI * 0.0125f; }
DirectX11 学习笔记2 - 添加按键事件 实现视角平移 旋转
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。