实时地形引擎
(DirectX 9)
作者:GREG SNOOK
译者:承天一
CHARLES RIVER MEDIA,Inc.
Hingham,Massachusetts
1
仅以此书献给我的妻子,Denise,
和我的三个孩子 Madeline,Ben,和 Jon,
感谢你们对我非凡的包容和支持。
2
译序
关于本书和翻译问题
本书的英文名为《Real‐Time 3D Terrain Engines Using C++ And DirectX 9》,鉴于是第
一次翻译技术类的英文书籍,翻译风格有些怪,请大家见谅吧。英文术语我尽可能的按照通
用的中文叫法或者直接使用原文,书的有些地方我也依个人喜好修改了一点,但不改变原意,
难以翻译的部分我加了注释或是标注了红色。由于我翻译的是影印版,所以我发现了缺页现
象(目前只看到了一页,还是基础部分),还有一些图片不清晰的情况,但基本不影响阅读。
本书中的错误(我认为)我都在原文内加以改正并注释了出来。所以如果读者对照原版后发
觉该处不妥,请联系我,我将感激不尽。
关于本书的用途
只为学习交流。我不求翻出很好的译作,只希望有人困于英文原著之时,本书可以帮上
些忙。
关于进度和我的联系方式
我尽力在 2009 年 11 月前结束翻译,并调试完所有代码。这是第一次的版本,目前进度
为一到六,下一次发布七到九章。若有人找到我翻译中的错误,可以通过我的邮箱 cty41@y
ahoo.com.cn 联系我。
09 年 10 月 11 日
第二次更新
隔了两周,终于把这本书的第二部分完成了,目前这部分翻得不是很好,希望大家多给
我提意见就好.顺便我也把所有代码修改好了,可以在 vs08+DirectX 9.0 march2009 下运行。
得赶进度了。
09 年 10 月 24 日
3
2009 年 10 月 11 日
目录
感谢7
第一部分 3D 基础知识8
第一章 DirectX 9.0 和 D3DX 入门 9
设置 Visual Studio.Net 10
Direct3D 示例程序框架 11
使用 D3DX 数学库 12
Direct3D 坐标系统 13
D3DX 向量和点 14
标准向量 15
点乘 18
叉乘 18
D3DX 矩阵 20
四元数旋转 21
参考
第二章 基本三维物体 22
基本 Direct3D 对象 23
使用 D3DX 加载和显示模型 24
使用 Direct3D 效果(Effect)文件 24
D3DX 框架(FRAME)和网格容器 30
骨骼动画和蒙皮网格 32
参考 34
第三章 高级着色语言 35
HLSL 着色器格式 36
变量和数据类型 37
表达式和内置函数 39
和纹理和采样器打交道 40
过程纹理(Procedural Texture)着色器 41
考虑旧式硬件 42
效果文件里的 HLSL 函数 42
第四章 Gaia 引擎总览 46
认识 Gaia,3d 地形引擎 47
主应用程序(application host) 47
创建数据池 48
4
管理共享数据资源 54
资源基类 57
纹理资源和表面材质 58
渲染方式资源 59
索引和顶点缓存 60
模型资源 61
场景节点和物体 63
渲染队列 63
模型编辑器 75
参考 76
第二部分 地形系统介绍 77
第五章 世界管理 78
场景组织背后的动机 79
基本四叉树 81
提升四叉树 82
为四叉树加入一个维度 84
快速四叉树搜索 85
慢速四叉树搜索 87
参考 91
第六章 基本地形几何体 92
以高度位图作为地形输入数据 93
程序生成的高度位图 94
中点置换法 94
柏林噪音 96
处理高度位图数据 103
地形几何体基本类 106
地形几何体的索引缓存 107
地形几何体的顶点缓存 109
渲染地形区块 114
基本地形演示 118
参考 119
第七章
第八章