Real-Time 3D Terrain Engines Using C++ And DirectX9(1)

 

第一部分

3D基础

要完全地建立一个引擎,我们需要以一个好的基础开始。在部分,我介绍DirectX 9.0里最新的进步,并且透彻地研究一下SDK中提供的DirectX 例子。最简单的原因,我们将在Microsoft提供的这些类上建立我们的引擎。另外,我们将看一下DirectX 9.0  SDK提供的Direct3D 扩展库。这部分库的作用是满足我们基本的3D 数学库的需要,并且为加载和维护我们的游戏资源提供了有用的方法。

      DirectX  9.0中,我们也将深入地研究HLSL语言,HLSL语言是类似与C语言的开发语言,它可以使渲染器作者在不借助低水平的汇编渲染代码的情况下写顶点和像素渲染器。这是介绍我们今天的图形硬件3D 渲染程序的好方法。这本书将集中介绍的HLSL的应用,而不是汇编语言方法,因为它易用性和可读性。

     对于想学习低水平汇编语言的读者,HLSL也可以做为一本非常有用的学习参考。DirectX SDK提供的HLSL命令行编译器fxc.exe 可以利用/Fc 命令选项把HLSL语言程序转化汇编语言文件。通过利用DirectX SDK 文档帮助,编写HLSL代码观察相应的汇编代码可以增加对这些语言的洞察力。周期性地编译成汇编语言也是监控我们HLSL 代码功效的好方法。

     利用DirectX  例子框架和D3DX允许我们增强我们的引擎并且运行的更快。然而,这些库在适应我们的零售产品的同时,他们是为一般的应用设计的,可能在一些情况下,追求了适应性,牺牲了速度。当我们利用我们的地形引擎建立一个零售应用时,我们可能发现我们关于应用程序的内容和目标平台的知识可以帮助我们走捷径,或者利用手写的替换D3DX组件,实现额外的速度。为了防止这种不测事件,我们将在D3DX和例子框架之上建立我们自己的库来提供我们自己定制的界面。如果我们后来发现我们的需要与Microsoft 库提供的支持不同,这种分离的程序将允许我们如写我们自己定制的内核而不用改变高水平的界面。

      除了建立在D3D例子框架和D3DX库的源代码外,我们也提供自己的有用功能和有用的类的低水平库。这些核心库为我们操作数值,处理浮点数和分配内存提供必要的界面。另外,我们也提供一系列使我们编程更容易的调试和配置类。在编写代码的同时,这些调试和配置类将帮助我们在代码没有除问题前发现程序中的Bug

      这些叫做核心库组件的功能和类在和本书的CDROM中。它们是意义明确,文档良好的源代码。因此,在本书中,我们不复习它们的使用细节。这允许我们花更多的时间在手边的任务:建立一个健壮的3D地形引擎。当你遇到这些源代码中的这些类,参考相应的源代码文件更深刻的理解它们的功能。在附录A,”Gaia 功能类也提供更多功能类的一览表。在附录B,“浮点技巧”,解释一些游戏引擎开发中用到的浮点数。

        这完成这部分以前,我们将完成我们第一个Demo中所有需要的组件。这是一个可以在一般Direct3D  X文件格式(*.X)加载模型,贴纹理和视觉动画的模型查看程序。它提供加载和查看包含HLSL渲染器的D3DX 效果文件(.fx)。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值