博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DirectX11 创建视图-投影矩阵
阅读量:4087 次
发布时间:2019-05-25

本文共 957 字,大约阅读时间需要 3 分钟。

创建视图-投影矩阵

1. 什么是视图矩阵和投影矩阵?

视图矩阵:在游戏中,特别是 3D 游戏,照相机扮演一个很大的角色。照相机取向用于几何体来模拟现实照相机的效果。照相机所代表的矩阵叫做视图矩阵。

投影矩阵:为了模拟照相机的位置和方向,我们增加一个投影的概念。一个投影矩阵用于模拟正投影(orthogonal)或透视(perspective)投影。我们能够通过操纵投影矩阵来实现一些效果,比如缩放一个镜头的效果。正投影对于 2D 元素来说意义重大,因为使用正投影会使得物体在渲染时其视景深度不会使用。这意味着如果你有两个单位长度为 10 的盒子,但是它们在 Z 轴上相距 100 个单位,则使用正投影会使得它们紧挨着显示而与深度无关。正投影不仅用于 2D 游戏,而且用于 3D 游戏的 2D 界面元素,例如血条,弹药数量,时间,文本等。透视投影用于在我们渲染物体时增加透视效果。意思是物体远离照相机则在屏幕上显示会越来越小,而靠近照相机则会显示越来越大。 在真实生活中你以不同距离来观察对象就会有这种感觉。 你隔一小段距离观察场景,较远的物体看起来较小。如果你靠近建筑物观察,建筑物的高度远远大于你在一英里外观察它的高度。

2. 如何创建视图-投影矩阵?

视图-投影矩阵即是视图矩阵和投影矩阵的相乘结合。得到同时具有两种变换效果的矩阵。

创建左手坐标系的正投影矩阵,可以调用XMMatrixOrthographicOffCenterLH方法,该参数具有如下几个参数:
第一个参数,视口X的最小值。
第二个参数,视口X的最大值。
第三个参数,视口Y的最小值。
第四个参数,视口Y的最大值。
第五个参数,近裁剪平面,用于消除需要渲染在它前面的对象。
第六个参数,远裁剪面,用于消除任何在它之后的对象。

3. 创建视图-投影矩阵示例代码

XMMATRIX view = XMMatrixIdentity( );    XMMATRIX projection = XMMatrixOrthographicOffCenterLH( 0.0f, 800.0f, 0.0f, 600.0f, 0.1f, 100.0f );    vpMatrix_ = XMMatrixMultiply( view, projection );

转载地址:http://xjyii.baihongyu.com/

你可能感兴趣的文章
教你发布你npm包
查看>>
nvm 和 nrm 的安装与使用
查看>>
React Hooks 一步到位
查看>>
React Redux常见问题总结
查看>>
前端 DSL 实践指南
查看>>
ReactNative: 自定义ReactNative API组件
查看>>
cookie
查看>>
总结vue知识体系之实用技巧
查看>>
PM2 入门
查看>>
掌握 TS 这些工具类型,让你开发事半功倍
查看>>
前端如何搭建一个成熟的脚手架
查看>>
Flutter ListView如何添加HeaderView和FooterView
查看>>
Flutter key
查看>>
Flutter 组件通信(父子、兄弟)
查看>>
Flutter Animation动画
查看>>
Flutter 全局监听路由堆栈变化
查看>>
Android 混合Flutter之产物集成方式
查看>>
Flutter混合开发二-FlutterBoost使用介绍
查看>>
Flutter 混合开发框架模式探索
查看>>
Flutter 核心原理与混合开发模式
查看>>