上的程序的的基础上。在基类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 - 加入关键事件 实现视角转换 旋转的更多相关文章

  1. muduo学习笔记(二)Reactor关键结构

    目录 muduo学习笔记(二)Reactor关键结构 Reactor简述 什么是Reactor Reactor模型的优缺点 poll简述 poll使用样例 muduo Reactor关键结构 Chan ...

  2. Directx11学习笔记【九】 3D渲染管线

    原文:Directx11学习笔记[九] 3D渲染管线 原文地址:http://blog.csdn.net/bonchoix/article/details/8298116 3D图形学研究的基本内容,即 ...

  3. Directx11学习笔记【八】 龙书D3DApp的实现

    原文:Directx11学习笔记[八] 龙书D3DApp的实现 directx11龙书中的初始化程序D3DApp跟我们上次写的初始化程序大体一致,只是包含了计时器的内容,而且使用了深度模板缓冲. D3 ...

  4. Directx11学习笔记【二十二】 用高度图实现地形

    本文由zhangbaochong原创,转载请注明出处http://www.cnblogs.com/zhangbaochong/p/5827714.html 在前面我们曾经实现过简单的地形(Direct ...

  5. Directx11学习笔记【二】 将HelloWin封装成类

    我们把上一个教程的代码封装到一个类中来方便以后的使用. 首先新建一个空工程叫做MyHelloWin,添加一个main.cpp文件,然后新建一个类叫做MyWindow,将于窗体有关的操作封装到里面 My ...

  6. Directx11学习笔记【一】 最简单的windows程序HelloWin

    声明:本系列教程代码有部分来自dx11龙书及dx11游戏编程入门两本书,后面不再说明 首先,在vs2013中创建一个空的解决方案Dx11Demo,以后的工程都会放在这个解决方案下面.然后创建一个win ...

  7. Directx11学习笔记【二十一】 封装键盘鼠标响应类

    原文:Directx11学习笔记[二十一] 封装键盘鼠标响应类 摘要: 本文由zhangbaochong原创,转载请注明出处:http://www.cnblogs.com/zhangbaochong/ ...

  8. javaSE学习笔记(15) ---缓冲流、转换流、序列化流

    javaSE学习笔记(15) ---缓冲流.转换流.序列化流 缓冲流 昨天复习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化 ...

  9. unity3d学习笔记(一) 第一人称视角实现和倒计时实现

    unity3d学习笔记(一) 第一人称视角实现和倒计时实现 1. 第一人称视角 (1)让mainCamera和player(视角对象)同步在一起 因为我们的player是生成的,所以不能把mainCa ...

随机推荐

  1. ExtJS4 表格的嵌套 rowExpander

    今天做一个grid,里面的数据须要带明细,思来想去还是搞个表格嵌套吧!看下图 对于grid中每一条记录点击左边的+号能展开一个明细的子表格 全部数据包含列名均从后台获得,子表格的数据临时在本地以做測试 ...

  2. struts2和struts1认识

    1.Struts 2基本流程 Struts 2框架本身可以大致分3部分:核心控制器FilterDispatcher.业务总监Action与用户实现企业业务逻辑组件. 核心控制器FilterDispat ...

  3. Java Web整合开发(14) -- Struts 1.x 概述

    整合Spring与Struts1的三种方法总结 无论用那种方法来整合,第一步就是要装载spring的应用环境,有三种方式: #1. struts-config.xml <?xml version ...

  4. Cocos2d-X中实现批处理精灵

    使用普通方法实现批处理精灵 在Sprite.h中加入以下的代码 #ifndef __Sprite_SCENE_H__ #define __Sprite_SCENE_H__ #include " ...

  5. ssl通关的概念(一个)

    在公司最近的项目涉及多种加密.安全.我一直在这方面缺乏经验.很协议仅仅知道是什么概念.用于传输的加密SSL,也煞费苦心.非常easy一件事,折腾了很长一段时间.IT该行啊,真的是.难者不会,与会者困难 ...

  6. Appium - iOS Mac环境结构

    Appium - iOS Mac环境结构 笔者: Max.Bai 时间: 2014/10 1. iOS开发环境的搭建 1.1系统要求 MacOS X 10.7 or higher, 10.9.2 re ...

  7. bootstrap+jQuery.validate

    bootstrap+jQuery.validate表单校验   谈谈表单校验 这大概是一种惯例,学习前台后台最开始接触的业务都是用户注册和登录.现在社会坚持以人为本的理念,在网站开发过程同样如此.Us ...

  8. 新秀学习Hibernate——一个简单的例子

    一个.Hibernate开发. 上篇博客已经为大家介绍了持久层框架的发展流程,持久层框架的种类. 为了可以使用Hibernate高速上手,我们先解说一个简单的Hibernate应用实例hibernat ...

  9. Google大数据三篇著名论文----中文版

    Google File System中文版 Google Bigtable中文版      Google MapReduce中文版

  10. android 推断应用程序是系统程序还是用户程序

    直接上代码: AppInfo.java <span style="font-size:18px;">package com.example.packages; publ ...