
D3D
文章平均质量分 85
PjBao
明天会更好
展开
-
第六章 使用Direct3D绘制
第五章主要关注渲染管道的概念和数学方面。本章重点介绍配置渲染管道所需的Direct3D API接口和方法,定义顶点和像素着色器,并将几何图形提交给绘制管道进行绘制。学完本章,您将能够绘制各种几何形状的着色或线框模式。学习目标: 1.发现用于定义,存储和绘制几何数据的Direct3D接口方法。 2.学习如何编写基本的顶点和像素着色器。 3.了解如何使用渲染状态配置渲染管道。 4.了解如何...翻译 2018-02-01 17:45:05 · 1455 阅读 · 0 评论 -
20-粒子系统和输出流
在本章中,我们关心的是对一组粒子(通常很小)进行建模的任务,这些粒子的行为都类似但有点随机; 我们称这样的粒子集合为粒子系统。 粒子系统可用于模拟各种各样的现象,如火灾,雨水,烟雾,爆炸,喷水,魔法效果和射弹。 目标: 1.学习如何使用几何着色器和流出功能有效地存储和渲染粒子。 2.了解我们如何使用基本的物理概念使我们的粒子以物理逼真的方式运动。 3.设计灵活的粒子系统框架,可以轻松创建新...翻译 2018-04-24 09:08:32 · 1028 阅读 · 0 评论 -
16-选取
在本章中,我们遇到了确定用户用鼠标光标选取的3D对象(或基元)的问题(参见图16.1)。换句话说,给定鼠标光标的2D屏幕坐标,我们可以确定投影到该点上的3D对象吗?要解决这个问题,从某种意义上说,我们必须倒退;也就是说,我们通常从3D空间转换到屏幕空间,但是在这里我们从屏幕空间转换回3D空间。当然,我们已经有一个小问题:2D屏幕点不对应于唯一的3D点(即,多于一个3D点可以投影到相同的2D投影窗口...翻译 2018-04-20 10:49:37 · 582 阅读 · 0 评论 -
21-阴影映射
阴影向观察者指示光线来源,并帮助传达场景中物体的相对位置。本章介绍了基本的阴影映射算法,这是一种在游戏和3D应用中建模动态阴影的流行方法。对于一本介绍性书籍,我们只关注基本阴影映射算法;通过扩展基本阴影映射算法来构建更高级的阴影技术,例如级联阴影贴图[Engel06],它可提供更好的质量结果。 目标: 1.发现基本阴影映射算法。 2.了解投影纹理如何工作。 3.了解关于正射投影。 4.了...翻译 2018-04-24 15:43:31 · 1865 阅读 · 0 评论 -
17-立方体贴图
在本章中,我们将研究立方体贴图,这些立方体贴图基本上是以特殊方式解释的六个贴图的数组。 使用立方体贴图,我们可以轻松地构建天空或模型反射。 目标: 1.了解立方体贴图以及如何在HLSL代码中对它们进行采样。 2.发现如何使用DirectX纹理工具创建立方体贴图。 3.了解我们如何使用立方体贴图来模拟反射。 4.了解我们如何使用立方体贴图来渲染球体,以模拟天空和遥远的山脉。立方体映射的...翻译 2018-04-20 15:00:37 · 994 阅读 · 0 评论 -
18-正态映射和位移映射
在第8章中,我们介绍了纹理映射,它使我们能够将图像中的细节映射到三角形上。但是,我们的法向矢量仍然定义在较粗糙的顶点级别并在三角形内插。作为本章的一部分,我们研究了一种在较高分辨率下指定曲面法线的流行方法。以更高的分辨率指定曲面法线将增加光照细节,但网格几何细节保持不变。位移映射与曲面细分相结合,使我们能够增加网格的细节。 目标: 1.了解我们为什么需要法线贴图。 2.发现如何存储法线贴图。...翻译 2018-04-20 17:49:40 · 844 阅读 · 0 评论 -
22-环境光遮蔽
由于性能的限制,实时照明模型通常不考虑间接光(即从场景中的其他物体反射回来的光)。但是,我们在现实世界中看到的许多光是间接的。在第7章中,我们将环境项引入了照明方程: A=la⊗maA=la⊗maA=l_a \otimes m_a 颜色lalal_a指定表面从光源接收的间接(环境)光的总量。环境材料颜色mamam_a指定表面反射和吸收的入射环境光的量。所有的环境光线都会使物体均匀光亮 - ...翻译 2018-04-25 09:17:16 · 2817 阅读 · 0 评论 -
23-网格
到目前为止,在本书中,我们已经使用程序生成的网格(例如圆柱体,网格,球体)以及从文件加载的一些简单网格数据(例如,头骨网格)。在这个简短的章节中,我们扩展了我们用来支持材料和其他信息的.m3d格式。在第25章中,我们将再次扩展这种格式以支持角色动画。.m3d格式不是标准的网格格式;它是我们为本书开发的一种格式,可以使网格加载到我们的演示中变得相对简单。工作室通常有他们自己的自定义模型格式,它们...翻译 2018-04-25 09:19:44 · 1213 阅读 · 0 评论 -
14-在DX中建立第一人称相机
本章中,我们设计了一套与你在第一人称游戏中使用的相机相同的系统。该相机系统将会取代我们之前使用的轨道相机系统。学习目标: 1.复习视图空间转换的数学原理。 2.能定义第一人称相机的典型功能。 3.学习如何实现第一人称相机。14.1 视角变换复习视图空间是连接到摄像机的坐标系,如图14.1所示。相机位于正视z轴的原点处,x轴指向相机右侧,y轴指向相机上方。相对于描述世界坐标下场...翻译 2018-04-25 11:14:51 · 648 阅读 · 1 评论 -
D3DX库的使用&D3DX初始化
自7.0版以来,DirectX随D3DX(Direct3D扩展)库一起提供。该库提供了一组简化的数学运算,纹理和图像操作,网格操作以及着色器操作(例如编译和装配)相关的常见3D图形相关操作的函数,类和接口。也就是说,D3DX包含很多功能,如何你自己实现这些功能将会比较麻烦。我们使用D3DX库,因为它使我们能够专注于更有趣的材料。例如,可以简单调用D3DX函数D3DxiicreateTextur...原创 2018-05-03 15:38:53 · 1890 阅读 · 1 评论 -
19-地形渲染
地形渲染的想法是从一个平坦的网格开始(图19.1的顶部)。 然后我们调整顶点的高度(即y坐标),使网格模型平滑地从山到谷的过渡,从而模拟一个地形(图19.1的中间)。 当然,我们应用了一个很好的纹理来渲染沙滩,草地,岩石峭壁和雪山(图19.1的底部)。 目标: 1.了解如何为地形生成高度信息,以便在山谷之间实现平滑过渡。 2.了解如何纹理地形。 3.使用硬件细分来渲染具有连续细节层次的地形...翻译 2018-04-23 14:54:22 · 1970 阅读 · 1 评论 -
15-实例化与视锥裁剪
本章中,我们研究两个主题:实例化和截锥体剔除。实例化是指在场景中多次绘制同一个对象。我们描述了Direct3D的特性,使我们能够以最小的API开销实现实例化。剔除是指通过简单的测试避免绘制全部三角形的过程。 学习目标: 1.学习如何实现硬件实例化。 2.熟悉边界卷,为什么它们有用,如何创建它们以及如何使用它们。 3.发现如何实施视锥体筛选。15.1 HARDWARE INSTANC...翻译 2018-04-18 16:27:23 · 1581 阅读 · 0 评论 -
第七章 光照
如图7.1左边,一个没加光照的球体,右边一个加光照的球体。可见,左边的球看起来是平的 - 也许它根本不是一个球,而只是一个二维圆。另一方面,右边的球体看上去是3D的-照明和阴影帮助我们感知物体的形状和体积。事实上,我们对世界的视觉感受依赖于光及其与物质的相互作用,因此,产生真实照片的场景的许多问题都与物理上精确的照明模型有关。当然,模型越精确,计算量越大; 因此必须权衡效果和速度。如,用于电影...翻译 2018-02-05 18:00:26 · 1595 阅读 · 0 评论 -
第五章 渲染管线
第五章 渲染管线本章的主要主题是渲染管线。 给定一个三维场景和定位的虚拟摄像机的几何描述,渲染管线是指基于虚拟摄像机看到的(图5.1)生成二维图像所需的所有步骤序列。本章主要是理论性的 - 下一章将我们学习使Direct3D进行绘制的理论付诸实践。在我们开始渲染流程之前,我们有两个简短的步骤:首先,我们讨论3D幻影的一些元素(即我们通过平面2D监视器屏幕来看待3D世界的错觉)。其次,我们解释颜...翻译 2018-01-30 16:32:35 · 1435 阅读 · 1 评论 -
第八章 纹理
我们的Demo变得开始有趣,但真实世界的对象的细节通常比每个顶点颜色可以捕捉到的更多。纹理映射是一种将图像数据映射到三角网格的技术,从而增加场景的细节和真实感。如,我们可以通过在每一边映射一个箱子纹理来构建一个立方体,并把它变成一个箱子(图8.1)。学习目标: 1.了解如何指定映射到三角网格的纹理。 2.了解如何创建和启用纹理。 3.了解如何过滤纹理以创建更平滑的图像。 4.发现如何用...翻译 2018-02-06 15:28:13 · 922 阅读 · 0 评论 -
第四章 初始化D3D
4 初始化D3D本章第一部我们会熟悉一些D3D的基本数据类型和基本的图形概念。然后,我们详细说明初始化Direct3D所需的步骤。之后,引入准确计算和实时图形应用所需的时间测量。最后,我们将探索示例框架代码,该代码用于提供本书中所有演示应用程序的界面。学习目标: 1.了解Direct3D在3D硬件编程中的作用。 2.了解COM与Direct3D的作用。 3.学习基本图形概念,例如2D...翻译 2018-01-26 10:31:37 · 1485 阅读 · 0 评论 -
第十章 模板渲染
模板缓冲区是我们可以用来实现一些特殊效果的屏幕外缓冲区。模板缓冲区与后台缓冲区和深度缓冲区具有相同的分辨率,使得模板缓冲区中的第ij个像素与后台缓冲区和深度缓冲区中的第ij个像素相对应。从§4.1.5中回想一下,当一个模板缓冲区被指定时,它被附加到深度缓冲区。顾名思义,模板缓冲区作为一个模板,并允许我们阻止某些像素片段渲染到后台缓冲区。例如实现镜子时,我们需要在镜子的平面上反射一个物体;但是,...翻译 2018-02-27 17:02:02 · 596 阅读 · 0 评论 -
第十一章 几何着色器
假设我们不使用细分阶段,几何着色器阶段是位于顶点和像素着色器阶段之间的可选阶段。顶点着色器输入顶点,几何着色器输入整个图元。例如,如果我们绘制三角形列表,则几何着色器程序将为列表中的每个三角形T所执行: for(UINT i = 0; i < numTriangles; ++i) OutputPrimitiveList = GeometryShader(T[i].vertexList);...翻译 2018-02-27 17:04:04 · 2347 阅读 · 1 评论 -
第十二章 计算着色器
GPU已经过优化,可以处理来自单个位置或顺序位置的大量内存(所谓的“流式操作”); 这与设计用于随机存储器访问的CPU相反[Boyd10]。 而且,由于顶点和像素是独立处理的,所以GPU被设计为大规模并行; 例如,NVIDIA“Fermi”架构支持多达16个流式多处理器,32个CUDA内核,总共512个CUDA内核[NVIDIA09]。显然图形从这种GPU架构中受益,因为架构是为图形设计的。但...翻译 2018-02-27 17:05:16 · 2039 阅读 · 0 评论 -
第九章 混合
观察图9.1 我们开始渲染帧,首先绘制地形,然后是木箱,以便地形和箱子像素位于后台缓冲区。然后,我们使用混合将水面绘制到后部缓冲区,使得水像素与地形混合,并在后部缓冲区中创建像素,以便地形和箱子通过水面显示。在本章中,我们将研究混合技术,它们允许我们将当前正在栅格化的像素(所谓的源像素)与之前栅格化的像素混合(组合)到后台缓冲区(所谓的目标像素)。除此之外,这种技术使我们能够渲染诸如水和玻璃之类的...翻译 2018-02-08 13:42:29 · 474 阅读 · 0 评论 -
第十三章 细分阶段
曲面细分阶段涉及曲面细分几何中涉及的渲染管线中的三个阶段。 简而言之,细分是指将几何细分为更小的三角形,然后以某种方式偏移新生成的顶点。 增加三角形数量的动机是为网格添加细节。 但为什么不创建一个详细的高分辨率网格来开始并完成? 以下是曲面细分的三个原因。1.GPU上的动态LOD。 我们可以根据摄像机与其他因素的距离动态调整网格的细节。 例如,如果网格距离很远,则渲染高分辨率版本会浪费,因为无...翻译 2018-03-01 17:14:05 · 389 阅读 · 0 评论 -
Windows编程简介-DX的Windows编程基础
要使用Direct3D API(应用程序编程接口),有必要创建一个带有主窗口的Windows(Win32)应用程序,我们将在其中呈现我们的3D场景。本文可作为使用本机Win32 API编写Windows应用程序的介绍。通俗讲,Win32 API是一组低级函数和结构,以C编程语言向我们公开接口,使我们能够创建Windows应用程序。例如,要定义一个窗口类,我们填写一个Win32 API WNDCLA...原创 2018-05-04 14:04:03 · 1056 阅读 · 0 评论