本书是DirectX游戏编程的入门教材,是作者对其近几年来在高校教授游戏程序设计课程的教案和实验设计的浓缩,力求凸显“低门槛、重实践、精理论”的特色,其规划和设计融入了作者多年来对该课程教学的经验总结和思考。本书主要包括两部分内容,基础部分和高级部分。基础部分主要讲述了DirectX的基础知识,包括游戏开发的基本数学知识、DirectX开发的基本配置、基本开发框架、基本图形的绘制、文本显示、变换、纹理映射。高级部分根据DirectX技术的发展趋势,选讲了一些有生命力的技术,主要包括深度测试和反走样、网格、混合、模板以及顶点着色器和像素着色器等知识。
本书特色:
作为《OpenGL游戏编程》的姊妹篇,本书也是游戏编程的入门书籍,不同的是选用了另一个非常流行的游戏软件开发包——DirectX进行游戏编程。当前,Direct3D已经成为3D游戏开发的主流技术。因此对于欲进行3D游戏开发、图形处理、虚拟现实、仿真系统等领域的初学者来说,学习Direct3D是他们最好的起点。基于此,本书在游戏开发的背景下,介绍了用Direct3D开发交互式3D图形程序的几乎所有主题。
本书的规划和设计融入了作者多年来对该课程教学的经验总结和思考。前半部分介绍了用Direct3D进行游戏开发的基本技术,包括游戏开发的基本数学知识、Direct3D开发的配置、开发框架、基本图形的绘制、文本显示、变换、纹理映射;后半部分根据DirectX技术的发展趋势,选择了一些有生命力的技术,主要包括深度测试和反走样、网格、混合、模板以及顶点着色器和像素着色器等技术。
突出“低门槛、重实践、精理论”的特色。
内容翔实,实例丰富,完全从实战出发讲述Direct3D的基本理论及技术。并且实例中深入剖析一些目前市面图书中未涉及的实用技术细节。
所有实例都力求实用、新颖、有趣,并取材于实际项目,具有极高的可复用价值,完全能在实际项目中“即插即用”。
全书代码保持一种良好的编码风格,提供清晰的注释和详细的解释。
深入剖析了vertex shader、pixel shader编程和HLSL语言等代表Direct3D技术趋势的新技术并给出大量的实例。
作为《OpenGL游戏编程》的姊妹篇,本书也是游戏编程的入门书籍,不同的是选用了另一个非常流行(甚至已经成为主流技术)的游戏软件开发包DirectX进行游戏编程。本书是作者近几年来在高校教授游戏程序设计课程的经验凝结,力求凸显“低门槛、重实践、精理论”的特色,其规划和设计融入了作者多年来对该课程教学的经验总结和思考。全书共有16章,包括两部分内容:基础部分和高级部分。基础部分包括第1章~第8章,主要讲述了DirectX的基础知识,包括游戏开发的基本数学知识、DirectX开发的基本配置、基本开发框架、基本图形的绘制、文本显示、变换、纹理映射。高级部分包括第9章~第16章,根据DirectX技术的发展趋势,介绍了一些有生命力的技术,主要包括深度测试和反走样、网格、混合、模板以及顶点着色器和像素着色器等知识。本书面向的读者是有一定程序设计能力的DirectX初学者或爱好者。
各章主要内容分别为:第1章介绍游戏开发相关的一些数学基础知识;第2章对DirectX的历史、功能及基本配置做了介绍;第3章介绍了本书所涉及的Direct3D程序设计框架,并通过实例详细讲解了基本的Win32框架和DXUT框架;第4章介绍了文本显示程序的编写,为后续章节实例中的文本显示做准备;第5章介绍了基本图形的绘制过程,主要讲解了基本图元的类型,以及使用顶点缓存和索引缓存绘制基本图形的方法;第6章介绍了3种基本变换并辅以实例对其进行详细说明;第7章介绍了材质和光照的使用,给出了不同光照和不同材质下的实例效果对比;第8章介绍了纹理的载入和绘制方式;第9章介绍了深度测试和反走样的基本原理,并分别给出了实例;第10章和第11章介绍了网格的定义,包括网格中顶点缓存和索引缓存的填充,X文件导入生成网格的过程,渐进网格的生成和控制;第12章介绍了混合和模板,并分别给出了实例;第13章~第15章介绍了着色器部分的内容,主要对顶点着色器和像素着色器的功能、使用、语义等进行了详细阐述,并给出了实例解析;第16章给出了一个完整的用DirectX开发的RPG游戏实例,主要介绍了游戏开发的一个简单但完整的过程。
对于初学者来说,按照本书的章节顺序进行阅读是很好的选择,书中所有的实例都是按照章节的内容有序安排的;而对于有经验的读者,可以按需要有选择地阅读。本书的特点是每章都有详细的实例程序,并且对程序代码进行了清晰的编号和详细的解释。可以作为高等院校游戏专业的教材,也可供游戏开发及研究人员参考。
经过对本书的学习,你可以掌握DirectX游戏开发的基础知识。通过这些基础知识的学习,你甚至可以编写一个自己的游戏。祝学习愉快!
本书附带的光盘中为书中主要实例的源程序,经测试可以在VC 2003及以上版本环境下运行。
本书第4、7章及第12章的模板部分由王鹏杰编写,第1、2、11章和其余章节的实例部分由李威编写,其余内容由王聪和贾彦磊编写。在编写过程中本书参考和引用了很多现有的DirectX书籍和网络资源(见书后的参考文献列表),在此向原作者表示深深的谢意。最后,本书要特别感谢机械工业出版社华章分社的陈冀康编辑所给予的指导、帮助和鼓励。
同时感谢关旭成、方郁、王江,他们为本书的编写做了大量的工作,没有他们的努力,本书是不可能顺利完成的。
王鹏杰
2009年10月25日于浙大紫金港
计算机\程序设计
作为《OpenGL游戏编程》的姊妹篇,本书也是游戏编程的入门书籍,不同的是选用了另一个非常流行的游戏软件开发包——DirectX进行游戏编程。当前,Direct3D已经成为3D游戏开发的主流技术,其流行程度已经超过OpenGL。因此对于欲进行3D游戏开发、图形处理、虚拟现实、仿真系统等领域的初学者来说,学习Direct3D是他们最好的起点。基于此,本书将在游戏开发的背景下,介绍了用Direct3D开发交互式3D图形程序的几乎所有主题。
本书的规划和设计融入了作者多年来对该课程教学的经验总结和思考。前半部分介绍了用Direct3D进行游戏开发的基本技术,包括游戏开发的基本数学知识、Direct3D开发的配置、开发框架、基本图形的绘制、文本显示、变换、纹理映射;后半部分根据DirectX技术的发展趋势,选讲了一些有生命力的技术,主要包括深度测试和反走样、网格、混合、模板以及顶点着色器和像素着色器等技术。
本书特色:
突出“低门槛、重实践、精理论”的特色。
内容翔实,实例丰富,完全从实战出发讲述Direct3D的基本理论及技术。并且实例中深入剖析一些目前市面图书中未涉及的实用技术细节。
所有实例都力求实用、新颖、有趣,并取材于实际项目,具有极高的可复用价值,完全能在实际项目中“即插即用”。
全书代码保持一种良好的编码风格,提供清晰的注释和详细的解释。
深入剖析了vertex shader、pixel shader编程和HLSL语言等代表Direct3D技术趋势的新技术并给出大量的实例。
王鹏杰 李威 王聪 编著:暂无简介
前言
第1章3D游戏开发的数学基础
11点和向量
111点
112向量
12直线与平面
121直线方程
122平面方程
123直线与平面、平面与平面之间的关系
13矩阵与坐标变换
131矩阵
132二维几何变换
133齐次坐标
134三维几何变换
135投影变换
136裁剪操作
14坐标系
第2章DirectX快速入门
21DirectX概述
211DirectX的由来
212版本与功能
22Direct3D底层结构概述
221硬件抽象层
222硬件模拟层
223系统组成及相互关系
224Direct3D对象和Direct3D设备对象
23DirectX 90的配置和安装
231DirectX 90安装
232选择调试或发布库
233集成开发环境的配置
第3章DirectX程序框架
31Win32+C+Direct3D的基础框架
311创建新项目
312初始化Direct3D
313渲染函数
314结束处理
315消息处理
316程序入口
32DXUT框架
321创建一个DXUT 框架
322EmptyProjectcpp文件代码分析
323DXUT框架的生命周期
第4章文本显示
41文本绘制流程
42Win32程序框架实现
421创建字体对象
422绘制文本
423释放字体对象
43DXUT程序框架实现
431创建字体对象
432绘制文本
第5章基本图形的绘制
51图元
511点列表
512线段列表
513线段条带
514三角形列表
515三角形条带
516三角形扇
52坐标系
53灵活顶点格式(FVF)
54使用顶点缓存绘制图形
541创建顶点缓存
542访问顶点缓存
543使用顶点缓存绘制图形
55索引缓存
551创建索引缓存
552访问索引缓存
553使用索引缓存绘制图形
554获取顶点和索引缓存信息
56颜色表示法
57渲染状态
571着色模式
572多边形填充模式
58绘制准备
59D3DX几何物体
510实例设计与实现
5101基本图元的绘制实例
5102使用索引缓存绘制实例
第6章变换
61摄像机
62顶点变换
621局部坐标系
622世界坐标系
623观察坐标系
624光源
625投影变换
626友好的投影矩阵
627视口变换
63光栅化
64实例
641移动线框正方体实例
642不同颜色的正方体实例
第7章光照和材质
71真实感图形基本概念
72Direct3D中的光照
721光照的组成
722光源
723光源的设定
73Direct3D中的材质
731材质定义
732材质设置
74光照和材质小结
75光照和材质例子
751光源例子——SimpleLighting
752材质例子——MultiMaterial
第8章纹理映射
81纹理贴图
82纹理坐标
83纹理寻址模式
831重叠纹理寻址模式
832镜像纹理寻址模式
833钳位纹理寻址模式
834边界颜色纹理寻址模式
835一次镜像纹理寻址模式
836设置纹理模式
84纹理过滤
841最近点采样
842线性纹理过滤
843各向异性纹理过滤
844Mipmap纹理过滤
845设置纹理过滤方式
85纹理混合状态
86纹理实例解析
861纹理过程
862纹理过程流程图
863纹理寻址实例
864纹理过滤方式实例
第9章深度测试和反走样
91深度缓存与深度测试
911创建深度缓存
912激活深度测试
913设置深度测试函数
914更新深度缓存
92图形反走样
921检测设备是否支持多重采样
922启用多重采样的全景图形反走样
93深度测试实例
94反走样实例
第10章网格(一)
101ID3DXMesh
102子集和属性缓存
103绘制
104邻接信息
105优化
106属性表
107创建一个Mesh
108例子:从已有的顶点序列中创建一个网格
第11章网格(二)
111X文件格式解析
112读取X文件
113X文件的材质
114读X文件例子
115渐进网格
1151产生一个渐进网格
1152ID3DXPMesh方法
116渐进网格例子
第12章混合和模板
121混合因子
122混合计算
1221启用Alpha混合
1222设置Alpha混合因子
1223设置Alpha混合方法
123Alpha来源
1231顶点Alpha
1232材质Alpha
1233纹理Alpha
124Alpha测试
125Alpha混合实例
1251顶点Alpha实例
1252纹理Alpha实例
126模板
1261模板缓存的格式
1262模板测试
1263模板绘制状态
1264模板实例解析
第13章着色器入门
131着色器概述
1311顶点着色器和像素着色器
1312手法和渲染路径
1313GLSL与HLSL的比较
1314Cg与HLSL的比较
132HLSL的变量
1321标量
1322向量
1323矩阵
1324对象
1325结构体
1326用户自定义类型
1327变量类型的转换
1328修饰变量的关键字
1329变量重组
133HLSL的函数
1331内置函数
1332自定义函数
134HLSL基本语法
1341数学表达式
1342HLSL的关键字和保留字
135在Direct3D中使用HLSL
1351简单的实例
1352版本的查询
第14章顶点着色器
141顶点着色器概述
142顶点声明
1421描述顶点声明
1422创建和使用顶点声明
1423顶点声明与HLSL输入
143使用顶点着色器
1431编写并编译顶点着色器程序
1432创建顶点着色器
1433设置顶点着色器
1434销毁顶点着色器
144顶点着色器实例1:TeapotVS
145顶点着色器实例2:渐变动画MorphingVS
第15章像素着色器
151像素着色器概述
152使用像素着色器
1521测定像素着色器的支持
1522编译像素着色器
1523创建像素着色器接口
1524设置像素着色器
1525销毁像素着色器接口
153HLSL采样器对象
154多重纹理
1541允许多个纹理
1542编写顶点结构
155例子程序:像素着色器实现多纹理MultiTex
第16章一个游戏实例
161前言
162游戏整体架构
163游戏初始化
1631逻辑模块初始化
1632渲染模块初始化
1633声效模块初始化
164场景渲染
165游戏控制
166声效控制
参考文献