Directx11教程(58) 鼠标控制摄像机

       本篇教程我们实现鼠标旋转摄像机的操作。主要就是按下鼠标左键的时候,根据鼠标的移动对摄像机进行pitch, raw的组合旋转。具体修改代码是在D3CClass类中,增加对鼠标事件的处理:

case WM_LBUTTONDOWN:
    if( wparam & MK_LBUTTON )
        {
        SetCapture(hwnd);

        m_OldMousePos.x = LOWORD(lparam);
        m_OldMousePos.y = HIWORD(lparam);
        }
    return 0;

case WM_LBUTTONUP:
    ReleaseCapture();
    return 0;

case WM_MOUSEMOVE:
    if( wparam & MK_LBUTTON )
        {
        mousePos.x = (int)LOWORD(lparam);
        mousePos.y = (int)HIWORD(lparam);

        dx = mousePos.x - m_OldMousePos.x;
        dy = mousePos.y - m_OldMousePos.y;
        //通过鼠标转动摄像机
        m_Graphics->m_Camera->pitch(dy * 0.0087266f);
        m_Graphics->m_Camera->yaw(dx * 0.0087266f);

        m_OldMousePos = mousePos;
        }
    return 0;

完整的代码请参考:

工程文件myTutorialD3D11_53

代码下载:

https://files.cnblogs.com/mikewolf2002/d3d1150-58.zip

https://files.cnblogs.com/mikewolf2002/pictures.zip

posted on   迈克老狼2012  阅读(1829)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程

导航

< 2012年8月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示