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 - 加入关键事件 实现视角转换 旋转的更多相关文章
- muduo学习笔记(二)Reactor关键结构
目录 muduo学习笔记(二)Reactor关键结构 Reactor简述 什么是Reactor Reactor模型的优缺点 poll简述 poll使用样例 muduo Reactor关键结构 Chan ...
- Directx11学习笔记【九】 3D渲染管线
原文:Directx11学习笔记[九] 3D渲染管线 原文地址:http://blog.csdn.net/bonchoix/article/details/8298116 3D图形学研究的基本内容,即 ...
- Directx11学习笔记【八】 龙书D3DApp的实现
原文:Directx11学习笔记[八] 龙书D3DApp的实现 directx11龙书中的初始化程序D3DApp跟我们上次写的初始化程序大体一致,只是包含了计时器的内容,而且使用了深度模板缓冲. D3 ...
- Directx11学习笔记【二十二】 用高度图实现地形
本文由zhangbaochong原创,转载请注明出处http://www.cnblogs.com/zhangbaochong/p/5827714.html 在前面我们曾经实现过简单的地形(Direct ...
- Directx11学习笔记【二】 将HelloWin封装成类
我们把上一个教程的代码封装到一个类中来方便以后的使用. 首先新建一个空工程叫做MyHelloWin,添加一个main.cpp文件,然后新建一个类叫做MyWindow,将于窗体有关的操作封装到里面 My ...
- Directx11学习笔记【一】 最简单的windows程序HelloWin
声明:本系列教程代码有部分来自dx11龙书及dx11游戏编程入门两本书,后面不再说明 首先,在vs2013中创建一个空的解决方案Dx11Demo,以后的工程都会放在这个解决方案下面.然后创建一个win ...
- Directx11学习笔记【二十一】 封装键盘鼠标响应类
原文:Directx11学习笔记[二十一] 封装键盘鼠标响应类 摘要: 本文由zhangbaochong原创,转载请注明出处:http://www.cnblogs.com/zhangbaochong/ ...
- javaSE学习笔记(15) ---缓冲流、转换流、序列化流
javaSE学习笔记(15) ---缓冲流.转换流.序列化流 缓冲流 昨天复习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化 ...
- unity3d学习笔记(一) 第一人称视角实现和倒计时实现
unity3d学习笔记(一) 第一人称视角实现和倒计时实现 1. 第一人称视角 (1)让mainCamera和player(视角对象)同步在一起 因为我们的player是生成的,所以不能把mainCa ...
随机推荐
- 终结者单身——setAccessible(true)
首先看一下"传说"Singleton模式 package go.derek; public class Singleton{ public static int times; pr ...
- 【原创】构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化措施
原文:[原创]构建高性能ASP.NET站点 第六章-性能瓶颈诊断与初步调优(下前篇)-简单的优化措施 构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化措施 前言:本篇 ...
- 第十九章——使用资源调控器管理资源(1)——使用SQLServer Management Studio 配置资源调控器
原文:第十九章--使用资源调控器管理资源(1)--使用SQLServer Management Studio 配置资源调控器 本系列包含: 1. 使用SQLServer Management Stud ...
- Struts2之—实现自己的结果集的定义ajax
项目中我们常常遇到这种需求--页面部分刷新.比如:加入用户,转到加入用户页面时,页面自己主动载入了全部部门. 完整流程:选择所属部门,填写username和password,点击"注冊&qu ...
- zepto.js 源码注释备份
/* Zepto v1.0-1-ga3cab6c - polyfill zepto detect event ajax form fx - zeptojs.com/license */ ;(funct ...
- python基础课程_学习笔记13:标准库:有些收藏夹——sys
标准库:有些收藏夹 sys sys这个模块可以让你访问和python解释器联系紧密的变量和函数. sys模块中一些重要的函数和变量 函数/变量 描写叙述 argv 命令行參数,包含脚本名称 exit( ...
- JavaScript之一: 闭包、执行环境、作用域链
这是大虾的第一篇博文,大虾试图用最直白的语言去描述出所理解的东西,大虾是菜鸟,水平有限,有误的地方希望路过的朋友们务必指正,谢谢大家了. 从读书时代一路走来,大虾在学习的时候逐渐喜欢上了去追寻根源,这 ...
- VB.Net出口Excel原则
在VB机房的版本中,我们已经暴露导出Excel特征,此功能已重新接触到不同的理解 一.原理 要实现导出Excel的功能,首先要引用命名空间,目的是能够使用该命名空间下的方法和类 Imports ...
- 常见的FPGA内串行数据采样的方式
总结下常见的对串行数据采样的三种方式: 1. 全采样存储方式: 采用过采样,用过采样时钟,用移位寄存器移位,把每次采样值都存起来.采用高速的过采样时钟运行. 然后等待触发条件,(就是找到数据的起始点条 ...
- 每天收获一点点------Hadoop之初始MapReduce
一.神马是高大上的MapReduce MapReduce是Google的一项重要技术,它首先是一个编程模型,用以进行大数据量的计算.对于大数据量的计算,通常采用的处理手法就是并行计算.但对许多开发者来 ...