使用DXUT框架简单处理鼠标事件
来源:互联网 发布:python pdf 编辑:程序博客网 时间:2024/04/29 10:49
在书上没有找到使用DXUT中的camera类来处理简单鼠标事件的内容,在网上找到了,分享一下,只要简单几步就可以了,如果要处理复杂的鼠标响应事件,就自己写MouseProc( ... ),然后调用相应注册函数void DXUTSetCallbackMouse( ... ),下面的数处理鼠标转换视角和旋转物体等事件
有些camera类是在DXUTMisc.h中定义的,有些是在DXUTCamera.h中定义的
包含相应的头文件
定义一个全局变量保存model camera
CModelViewerCamera modelCamera ;
在OnD3D9CreateDevice函数中设置view matrix
eyePt 眼睛 位于z轴的负半轴5个单位距离处,DirectX使用左手系,z轴正向指向屏幕内部。
lookAt 视点 位于坐标原点
通过这个设置,我们相当于在z轴负半轴5个单位距离处朝坐标原点看
至于向上向量,camera类会为我们设置,一般是 D3DXVECTOR3 up(0.0f, 1.0f, 0.0f)
D3DXVECTOR3 eyePt(0.0f, 0.0f, -5.0f);D3DXVECTOR3 lookAt(0.0f, 0.0f, 0.0f);modelCamera.SetViewParams(&eyePt, &lookAt) ;
在OnD3D9ResetDevice函数中设置投影矩阵
float fAspectRatio = pBackBufferSurfaceDesc->Width / (FLOAT)pBackBufferSurfaceDesc->Height;modelCamera.SetProjParams( D3DX_PI/4, fAspectRatio, 0.1f, 1000.0f );modelCamera.SetWindow( pBackBufferSurfaceDesc->Width, pBackBufferSurfaceDesc->Height );
在OnFrameMove函数中调用camera的FrameMove函数
modelCamera.FrameMove(fElapsedTime);
在MsgProc函数中调用camera的消息处理函数,这使得model camera可以处理鼠标消息
modelCamera.HandleMessages(hWnd, uMsg, wParam, lParam) ;
最后,也是最重要的,是OnD3D9FrameRender函数中的代码
在每一帧开始绘制之前,我们要取得当前的矩阵并应用到当前的Scene中
// Set world matrixD3DXMATRIX world = *modelCamera.GetWorldMatrix() ;pd3dDevice->SetTransform(D3DTS_WORLD, &world) ;// Set view matrixD3DXMATRIX view = *modelCamera.GetViewMatrix() ;pd3dDevice->SetTransform(D3DTS_VIEW, &view) ;// Set projection matrixD3DXMATRIX proj = *modelCamera.GetProjMatrix() ;pd3dDevice->SetTransform(D3DTS_PROJECTION, &proj) ;
转载自http://archive.cnblogs.com/a/1779645/
- 使用DXUT框架简单处理鼠标事件
- 如何使用DXUT框架
- 如何使用DXUT框架
- JavaScript处理简单鼠标事件
- 使用DXUT建立基本框架
- DXUT框架
- 在MFC中使用DXUT(Direct3D)框架
- Qml实现对鼠标和键盘事件的简单处理
- 处理鼠标移出事件
- 处理鼠标移出事件
- DataGrid鼠标事件处理
- DataGrid鼠标事件处理
- DataGrid鼠标事件处理
- DataGrid鼠标事件处理
- DataGrid鼠标事件处理
- 处理鼠标移出事件
- 鼠标事件的处理
- 鼠标事件处理
- 华为面试题算什么,这个背会了外企随便进
- 纪念日 三年五载!
- 学会开口,学会不拖拉
- 为什么 C++ 仍如此重要
- vim配置
- 使用DXUT框架简单处理鼠标事件
- JDK1.5下载地址-windows平台
- 线性表
- 库文件中getline函数的声明已经存在
- iphone开发 判断手机状态:运行、后台
- Java 标准与规范
- IE8上传文件时获取文件本地路径问题(C:\fakepath\……)的解决办法
- 每日微软面试题——day 1
- Avoid nginx 411 Content-Length required errors