DirectX 视口学习
什么是viewport?
假设你站在一个密封的房子里,这个房子只有一个很小的窗口,你站在窗口前面,通过这个窗口你可以观察到外面的世界,那么这个窗口就相当于一个视口,而外面的世界就是3D中的场景。
视口有以下几个属性,长度和宽度,为了确定窗口的位置,还需要一个左上角坐标。
为了支持Z-Buffer,还需要两个深度值,分别是zMin, zMax,表示最小深度和最大深度。
这就是视口的定义。
在D3D中,视口用下面的结构体来表示,X和Y表示视口的左上角坐标,Width和Height表示窗口的宽度和高度,MinZ和MaxZ表示Z-buffer的最小值和最大值。
typedef struct D3DVIEWPORT9 {
DWORD X;
DWORD Y;
DWORD Width;
DWORD Height;
float MinZ;
float MaxZ;
} D3DVIEWPORT9, *LPD3DVIEWPORT9;
DirectX视口变换矩阵
视口变换在投影变换之后,视口变换的作用是将投影平面上的点转换为屏幕上的点,这是一个缩放的过程。
投影变换的作用是将viewing frustum(视景体)中的场景投影到一个平面上,这个平面就是投影平面,在DirectX中,使用近剪裁平面作为投影平面(z=1),
视口变换则是将这个cuboid中的物体变换到视口中;
其中cuboid的坐标范围是,
而viewport的坐标范围是,
视口变换矩阵,
DirectX 视口学习相关推荐
- 我的directX编程学习(4)-坐标变换初步
这些天对左边变换比较感兴趣.申明,本人对游戏编程没兴趣,只是近体做的项目用了DirectX而已,用了就要懂么!况且坐标变换也挺用脑的,我的大脑已经很久没用了,快锈死了,得动动了. 我的directX编 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 原文:Introduction to 3 ...
- DirectX 3D学习笔记(一)
DirectX 3D学习笔记(一) Ⅰ.渲染状态 设备的渲染状态控制Direct3D设备的光栅化组件的行为.通过改变光栅渲染状态属性,可以设置使用何种方式来进行渲染着色,以及如何进行雾化等. 在Dir ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图 原文:Introduction to 3D Game P ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十三章:计算着色器(The Compute Shader)...
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十三章:计算着色器(The Compute Shader) 原文: Int ...
- DirectX视口变换矩阵详解
视口变换在投影变换之后,视口变换的作用是将投影平面上的点转换为屏幕上的点,这是一个缩放的过程. 投影变换的作用是将viewing frustum(视景体)中的场景投影到一个平面上,这个平面就是投影平面 ...
- Windows 8 DirectX 开发学习笔记(十六)使用Terragen生成自然环境贴图
DirectX 游戏编程入门中提到一个Terragen软件可以生成环境贴图,所以登陆它的官方网站看了下.没想到Terragen生成的图片和照片一样,效果非常好,很多电影里有用到,所以下载免费版尝试一下 ...
- Windows 8 Directx 开发学习笔记(十一)地形纹理贴图
前一篇实现木箱贴图时,木箱的六个面都正好用一整张纹理图,即六个面的纹理坐标均在[0,1]内.然而在为比较大的模型贴图时,像山峰河谷模型,如果只用一张纹理图,那么每个三角形只得到几个纹理元素,无法为提供 ...
- Windows 8 Directx 开发学习笔记(四)示例程序小结
VS2012的示例程序包括了最基本的DirectX流程,涉及许多知识,所以看完代码之后还是感觉没有头绪,打算对整个过程再整理一下,方便进一步的学习. 正方体在空间中可以用它的8个顶点定义,而每个顶点可 ...
最新文章
- Python模拟赌博实验,赌博为什么能赌到倾家荡产?
- c++ 低位在前 高位在后_生意社:醋酸市场前三季度区间震荡 四季度一飞冲天
- 062_判断用户输入的是 Yes 或 NO
- HDU 2836 (离散化DP+区间优化)
- c#中mysql远程连接方法及实例
- java多线程总结二:后台线程(守护线程)
- window server 安装与卸载
- 如何在Outlook 2013中管理附件
- 足球预测_预测足球热
- java学习(149):字符输入流
- python elif可以单独使用_Python的elif语句怎么用
- Linux服务器配置和管理:虚拟机安装CentOS6.7
- 内存数据集产生的隐性成本
- 手机号正则和邮箱正则,常用正则解释
- JavaScript逻辑运算与或非
- 揭秘有状态服务上 Kubernetes 的核心技术
- 软件工程和计算机科学考公务员,软件工程可以考公务员吗
- Pega How To系列之一:如何在页面上动态显示/隐藏内容 ----CheneyWang
- NBA球员生涯数据统计系统(中南大学C语言课设)
- 设备设施管理内容有哪些?
热门文章
- uboot中IDE移植
- 电脑的cpu是怎么制作的?
- Consul 服务注册与发现01——简介|| 安装并运行Consul
- arthas-boot.jar 工具的简单使用
- Appium 移动端自动化 - Android SDK连接安卓手机,adb连接一加8手机USB调试实例演示,连接一加8手机不显示USB调试选项问题排查
- leetCode C++ 二分查找 35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
- stm32阶段总结笔记一
- CTFshow 反序列化 web261
- AMESim R14 运行时出现许可证错误
- Shell 与Python的交互