DirectX游戏编程.pdf

DirectX游戏编程.pdf
 

书籍描述

编辑推荐
《DirectX游戏编程》:畅销书《OpenGL游戏编程》姊妹篇,揭秘Direct3D游戏开发核心技术。
作为《OpenGL一游戏编程》的姊妹篇。《DirectX游戏编程》也是游戏编程的入门书籍,不同的是选用了另一个非常流行的游戏软件开发包——DirectX进行游戏编程。当前,Direct3D已经成为3D游戏开发的主流技术。因此对于欲进行3D游戏开发、图形处理、虚拟现实、仿真系统等领域的初学者来说,学习Direct3D是他们最好的起点。基于此,《DirectX游戏编程》在游戏开发的背景下,介绍了用Direct3D开发交互式3D图形程序的几乎所有主题。
《DirectX游戏编程》的规划和设计融入了作者多年来对该课程教学的经验总结和思考。半部分介绍了用Direct3D进行游戏开发的基本技术,包括游戏开发的基本数学知识、Direct3D开发的配置、开发框架、基本图形的绘制、文本显示、变换、纹理映射;后半部分根据DirectX技术的发展趋势,选择了一些有生命力的技术,主要包括深度测试和反走样、网格、混合、模板以及顶点着色器和像素着色器等技术。
《DirectX游戏编程》特色:
突出“低门槛、重实践、精理论”的特色。
内容翔实,实例丰富,完全从实战出发讲述Direct3D的基本理论及技术。并且实例中深入剖析一些目前市面图书中未涉及的实用技术细节。
所有实例都力求实用、新颖、有趣,并取材于实际项目,具有极高的可复用价值,完全能在实际项目中“即插即用”。
全书代码保持一种良好的编码风格,提供清晰的注释和详细的解释。
深入剖析了vertex shader、pixel shader编程和HLSL语言等代表Dir。ect3D技术趋势的新技术并给出大量的实例。

目录
前言
第1章 3D游戏开发的数学基础
1.1 点和向量
1.1.1 点
1.1.2 向量
1.2 直线与平面
1.2.1 直线方程
1.2.2 平面方程
1.2.3 直线与平面、平面与平面之间的关系
1.3 矩阵与坐标变换
1.3.1 矩阵
1.3.2 二维几何变换
1.3.3 齐次坐标
1.3.4 三维几何变换
1.3.5 投影变换
1.3.6 裁剪操作
1.4 坐标系

第2章 DirectX快速入门
2.1 DirectX概述
2.1.1 DirectX的由来.2.1.2 版本与功能
2.2 Direct3D底层结构概述
2.2.1 硬件抽象层
2.2.2 硬件模拟层
2.2.3 系统组成及相互关系
2.2.4 Direct3D对象和Direct3D设备对象
2.3 DirectX9.0的配置和安装
2.3.1 DirectX9.0安装
2.3.2 选择调试或发布库
2.3.3 集成开发环境的配置

第3章 DirectX程序框架
3.1 Win32+C+Direct3D的基础框架
3.1.1 创建新项目
3.1.2 初始化Direct3D
3.1.3 渲染函数
3.1.4 结束处理
3.1.5 消息处理
3.1.6 程序入口
3.2 DXUT框架
3.2.1 创建一个DXUT框架
3.2.2 EmptyProject.cpp文件代码分析
3.2.3 DXUT框架的生命周期

第4章 文本显示
4.1 文本绘制流程
4.2 Win32程序框架实现
4.2.1 创建字体对象
4.2.2 绘制文本
4.2.3 释放字体对象
4.3 DXUT程序框架实现
4.3.1 创建字体对象
4.3.2 绘制文本

第5章 基本图形的绘制
5.1 图元
5.1.1 点列表
5.1.2 线段列表
5.1.3 线段条带
5.1.4 三角形列表
5.1.5 三角形条带
5.1.6 三角形扇
5.2 坐标系
5.3 灵活顶点格式(FVF)
5.4 使用顶点缓存绘制图形
5.4.1 创建顶点缓存
5.4.2 访问顶点缓存
5.4.3 使用顶点缓存绘制图形
5.5 索引缓存
5.5.1 创建索引缓存
5.5.2 访问索引缓存
5.5.3 使用索引缓存绘制图形
5.5.4 获取顶点和索引缓存信息
5.6 颜色表示法
5.7 渲染状态
5.7.1 着色模式
5.7.2 多边形填充模式
5.8 绘制准备
5.9 D3DX几何物体
5.10 实例设计与实现
5.10.1 基本图元的绘制实例
5.10.2 使用索引缓存绘制实例

第6章 变换
6.1 摄像机
6.2 顶点变换
6.2.1 局部坐标系
6.2.2 世界坐标系
6.2.3 观察坐标系
6.2.4 光源
6.2.5 投影变换
6.2.6 友好的投影矩阵
6.2.7 视口变换
6.3 光栅化
6.4 实例
6.4.1 移动线框正方体实例
6.4.2 不同颜色的正方体实例

第7章 光照和材质
7.1 真实感图形基本概念
7.2 Direct3D中的光照
7.2.1 光照的组成
7.2.2 光源
7.2.3 光源的设定
7.3 Direct3D中的材质
7.3.1 材质定义
7.3.2 材质设置
7.4 光照和材质小结
7.5 光照和材质例子
7.5.1 光源例子——SimpleLighting
7.5.2 材质例子——MultiMaterial

第8章 纹理映射
8.1 纹理贴图
8.2 纹理坐标
8.3 纹理寻址模式
8.3.1 重叠纹理寻址模式
8.3.2 镜像纹理寻址模式
8.3.3 钳位纹理寻址模式
8.3.4 边界颜色纹理寻址模式
8.3.5 一次镜像纹理寻址模式
8.3.6 设置纹理模式
8.4 纹理过滤
8.4.1 最近点采样
8.4.2 线性纹理过滤
8.4.3 各向异性纹理过滤
8.4.4 Mipmap纹理过滤
8.4.5 设置纹理过滤方式
8.5 纹理混合状态
8.6 纹理实例解析
8.6.1 纹理过程
8.6.2 纹理过程流程图
8.6.3 纹理寻址实例
8.6.4 纹理过滤方式实例

第9章 深度测试和反走样
9.1 深度缓存与深度测试
9.1.1 创建深度缓存
9.1.2 激活深度测试
9.1.3 设置深度测试函数
9.1.4 更新深度缓存
9.2 图形反走样
9.2.1 检测设备是否支持多重采样
9.2.2 启用多重采样的全景图形反走样
9.3 深度测试实例
9.4 反走样实例

第10章 网格(一)
10.1 ID3DXMesh
10.2 子集和属性缓存
10.3 绘制
10.4 邻接信息
10.5 优化
10.6 属性表
10.7 创建一个Mesh
10.8 例子:从已有的顶点序列中创建一个网格

第11章 网格(二)
11.1 X文件格式解析
11.2 读取X文件
11.3 X文件的材质
11.4 读X文件例子
11.5 渐进网格
11.5.1 产生一个渐进网格
11.5.2 ID3DXPMesh方法
11.6 渐进网格例子

第12章 混合和模板
12.1 混合因子
12.2 混合计算
12.2.1 启用Alpha混合
12.2.2 设置Alpha混合因子
12.2.3 设置Alpha混合方法
12.3 Alpha来源
12.3.1 顶点Alpha
12.3.2 材质Alpha
12.3.3 纹理Alpha
12.4 Alpha测试
12.5 Alpha混合实例
12.5.1 顶点Alpha实例
12.5.2 纹理Alpha实例
12.6 模板
12.6.1 模板缓存的格式
12.6.2 模板测试
12.6.3 模板绘制状态
12.6.4 模板实例解析

第13章 着色器入门
13.1 着色器概述
13.1.1 顶点着色器和像素着色器
13.1.2 手法和渲染路径
13.1.3 GLSL与HLSL的比较
13.1.4 Cg与HLSL的比较
13.2 HLSL的变量
13.2.1 标量
13.2.2 向量
13.2.3 矩阵
13.2.4 对象
13.2.5 结构体
13.2.6 用户自定义类型
13.2.7 变量类型的转换
13.2.8 修饰变量的关键字
13.2.9 变量重组
13.3 HLSL的函数
13.3.1 内置函数
13.3.2 自定义函数
13.4 HLSL基本语法
13.4.1 数学表达式
13.4.2 HLSL的关键字和保留字
13.5 在Direct3D中使用HLSL
13.5.1 简单的实例
13.5.2 版本的查询

第14章 顶点着色器
14.1 顶点着色器概述
14.2 顶点声明
14.2.1 描述顶点声明
14.2.2 创建和使用顶点声明
14.2.3 顶点声明与HLSL输入
14.3 使用顶点着色器
14.3.1 编写并编译顶点着色器程序
14.3.2 创建顶点着色器
14.3.3 设置顶点着色器
14.3.4 销毁顶点着色器
14.4 顶点着色器实例1:TeapotVS
14.5 顶点着色器实例2:渐变动画MorphingVS

第15章 像素着色器
15.1 像素着色器概述
15.2 使用像素着色器
15.2.1 测定像素着色器的支持
15.2.2 编译像素着色器
15.2.3 创建像素着色器接口
15.2.4 设置像素着色器
15.2.5 销毁像素着色器接口
15.3 HLSL采样器对象
15.4 多重纹理
15.4.1 允许多个纹理
15.4.2 编写顶点结构
15.5 例子程序:像素着色器实现多纹理MultiTex

第16章 一个游戏实例
16.1 前言
16.2 游戏整体架构
16.3 游戏初始化
16.3.1 逻辑模块初始化
16.3.2 渲染模块初始化
16.3.3 声效模块初始化
16.4 场景渲染
16.5 游戏控制
16.6 声效控制
参考文献

序言
作为《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书籍和网络资源(见书后的参考文献列表),在此向原作者表示深深的谢意。最后,本书要特别感谢机械工业出版社华章分社的陈冀康编辑所给予的指导、帮助和鼓励。
同时感谢关旭成、方郁、王江,他们为本书的编写做了大量的工作,没有他们的努力,本书是不可能顺利完成的。

文摘
插图:

DirectX游戏编程

(1)世界坐标系
构建各种物体模型时,每个模型都位于其自身的局部坐标系中。我们还需要将这些物体组织在一起构成世界坐标系(全局坐标系)中的场景。世界坐标系变换就是将物体顶点坐标从模型自己局部的坐标系空间转换到世界空间。如图1-16所示是世界坐标系和模型的局部坐标系的对比。在模型空间里,顶点位置坐标依据模型的本地坐标系的原点而定,在世界空间里,所有模型的顶点共用一个原点,即世界坐标系原点。世界坐标系是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考框架。从非技术意义上讲,世界坐标系所建立的是整个场景的“最大”坐标系,其他的坐标系都是参考它来建立的。
世界坐标系也被广泛地称为全局坐标系或者宇宙坐标系。对于整个场景中的每个物体,它的位置和方向一般都是指它在世界坐标系中的值,它是一个绝对坐标,不随观察者方向的变化而变化。
(2)本地坐标系
本地坐标系也叫局部坐标系(10cal space)或模型坐标系(modeling space),是用于定义构成物体的三角形单元列表的坐标系。采用局部坐标系的优势体现在它可以简化建模过程。在物体的局部坐标系中建模要比直接在世界坐标系中容易得多。例如,本地坐标系允许我们构建模型时无须考虑位置、大小或相对于场景中其他物体的朝向。图1.15中显示了物体与本地坐标系的关系,图1-16中显示了世界坐标系与本地坐标系之间的关系。
那么你可能会问,既然有了世界坐标系可以确定物体的位置,那么还要本地坐标系做什么呢?本地坐标系在3D世界中处处存在,每个物体发生移动或改变方向时,与该物体相关联的本地坐标系也随之移动或改变方向,这将大大简化我们对各个物体模型的控制。比如我们要绘制一个机器人模型,我们可以建立其物体局部坐标系,在坐标系原点处绘制其身躯,然后向上平移绘制其头部和左右手,向下平移绘制其左右腿和脚。

内容简介
《DirectX游戏编程》是DirectX游戏编程的入门教材,是作者近几年来在高校教授游戏程序设计课程和实验设计经验的浓缩,力求凸显“低门槛、重实践、精理论”的特色,其规划和设计融入了作者多年来对该课程教学的经验总结和思考。《DirectX游戏编程》主要包括两部分内容:基础部分和高级部分。基础部分主要讲述了DirectX的基础知识,包括游戏开发的基本数学知识、DirectX开发的基本配置、基本开发框架、基本图形的绘制、文本显示、变换、纹理映射。高级部分根据DirectX技术的发展趋势,选讲了一些有生命力的技术,主要包括深度测试和反走样、网格、混合、模板以及顶点着色器和像素着色器等知识。
《DirectX游戏编程》适合有一定程序设计能力的DirectX初学者和游戏编程爱好者参考,也可作为高等院校相关专业、培训机构的游戏程序设计课程的教材。

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多