DirectX 9.0 3D游戏开发编程基础 内容提要:本书主要介绍如何使用DirectX 9.0开发交互式3D图形程序,重点是游戏开发。全书首先介绍了必要的数学工具,然后讲解了相关的3D概念。其他主题几乎涵盖了Direct3D中的所有基本运算,例如图元的绘制、光照、纹理、Alpha融合、模板,以及如何使用Direct3D实现游戏中所需的技术。介绍顶定点着色器和像素着色器的章节(包含了效果框架和新的高级着色语言的内容)对这些关键运算进行了较为集中的讨论。本书内容深入浅出,内容广泛,可供从事3D游戏程序设计、可视化系统设计或其他图形应用程序开发的开发人员和大中专院校学生参考,也极适合各种游戏开发培训机构作为Direct3D编程的培训教程。 DirectX 9.0 3D游戏开发编程基础 读后感:第Ⅰ部分 基础知识必备的数学知识 33D空间中的向量 3向量相等 7计算向量的长度 7向量的规范化 8向量加法 9向量减法 9数乘 10点积 11叉积 11矩阵 12矩阵相等、矩阵数乘和矩阵加法 13矩阵乘法 14单位矩阵 15逆矩阵 15矩阵的转置 16D3DX矩阵 16基本变换 19平移矩阵 20旋转矩阵 21比例变换矩阵 23几何变换的组合 24向量变换的一些函数 25平面(选读) 26D3DXPLANE 27点和平面的空间关系 27平面的创建 28平面的规范化 29平面的变换 29平面中到某一点的最近点 30射线(选读) 31射线 31射线与平面的相交 32小结 32第Ⅱ部分 Direct3D基础第1章 初始化Direct3D 371.1 Direct3D概述 371.1.1 REF设备 381.1.2 D3DDEVTYPE 381.2 COM(组件对象模型) 381.3 预备知识 391.3.1 表面 391.3.2 多重采样 411.3.3 像素格式 421.3.4 内存池 421.3.5 交换链和页面置换 431.3.6 深度缓存 441.3.7 顶点运算 451.3.8 设备性能 451.4 Direct3D的初始化 461.4.1 获取接口IDirect3D9的指针 471.4.2 校验硬件顶点运算 471.4.3 填充D3DPRESENT_PARAMETER结构 481.4.4 创建IDirect3DDevice9接口 501.5 例程:Direct3D的初始化 511.5.1 d3dUtility.h/cpp 521.5.2 例程框架 531.5.3 例程:D3D初始化 541.6 小结 56第2章 绘制流水线 582.1 模型表示 592.1.1 顶点格式 602.1.2 三角形单元 602.1.3 索引 612.2 虚拟摄像机 622.3 绘制流水线 632.3.1 局部坐标系 642.3.2 世界坐标系 642.3.3 观察坐标系 652.3.4 背面消隐 672.3.5 光照 682.3.6 裁剪 682.3.7 投影 692.3.8 视口变换 702.3.9 光栅化 722.4 小结 72第3章 Direct3D中的绘制 733.1 顶点缓存与索引缓存 733.1.1 创建顶点缓存和索引缓存 733.1.2 访问缓存内容 763.1.3 获取顶点缓存和索引缓存的信息 773.2 绘制状态 783.3 绘制的准备工作 783.4 使用顶点缓存和索引缓存进行绘制 793.4.1 IDirect3DDevice9::DrawPrimitive 793.4.2 IDirect3DDevice9::DrawIndexedPrimitive 803.4.3 Begin/End Scene 813.5 D3DX几何体 813.6 例程:三角形、立方体、茶壶、D3DXCreate* 833.7 小结 87第4章 颜色 894.1 颜色表示 894.2 顶点颜色 924.3 着色 924.4 例程:具有颜色的三角形 934.5 小结 95第5章 光照 975.1 光照的组成 975.2 材质 985.3 顶点法线 1005.4 光源 1025.5 例程:光照 1055.6 一些附加例程 1085.7 小结 108第6章 纹理映射 1096.1 纹理坐标 1106.2 创建并启用纹理 1116.3 纹理过滤器 1126.4 多级渐进纹理 1136.4.1 多级渐进纹理过滤器 1146.4.2 使用多级渐进纹理 1146.5 寻址模式 1146.6 例程:纹理四边形 1166.7 小结 118第7章 融合技术 1197.1 融合方程 1197.2 融合因子 1217.3 透明度 1227.3.1 Alpha通道 1227.3.2 指定Alpha来源 1237.4 用DirectX Texture Tool创建Alpha通道 1237.5 例程:透明效果 1257.6 小结 127第8章 模板 1288.1 模板缓存的使用 1298.1.1 模板缓存格式的查询 1298.1.2 模板测试 1308.1.3 模板测试的控制 1308.1.4 模板缓存的更新 1328.1.5 模板写掩码 1328.2 例程:镜面效果 1338.2.1 成像中的数学问题 1338.2.2 镜面效果实现概述 1348.2.3 代码解析 1358.3 例程:Planer Shadows 1398.3.1 平行光阴影 1398.3.2 点光源产生的阴影 1408.3.3 阴影矩阵 1418.3.4 使用模板缓存防止二次融合 1428.3.5 代码解析 1438.4 小结 144第Ⅲ部分 Direct3D的应用第9章 字体 1499.1 ID3DXFont接口 1499.1.1 创建一个ID3DXFont接口对象 1499.1.2 绘制文本 1509.1.3 计算每秒绘制的帧数 1519.2 CD3DFont 1529.2.1 创建CD3DFont类的实例 1529.2.2 绘制文本 1529.2.3 清理 1539.3 D3DXCreateText函数 1539.4 小结 155第10章 网格(一) 15610.1 几何信息 15610.2 子集和属性缓存 15710.3 绘制 15910.4 网格优化 15910.5 属性表 16110.6 邻接信息 16310.7 克隆 16410.8 创建网格(D3DXCreateMeshFVF) 16510.9 例程:网格的创建与绘制 16710.10 小结 172第11章 网格(二) 17411.1 ID3DXBuffer 17411.2 XFile 17511.2.1 加载XFile文件 17511.2.2 XFile材质 17611.2.3 例程:XFile 17711.2.4 生成顶点法线 18011.3 渐进网格 18111.3.1 生成渐进网格 18211.3.2 顶点属性权值 18311.3.3 ID3DXPMesh接口方法 18311.3.4 例程:Progressive Mesh 18411.4 外接体 18711.4.1 一些新的特殊常量 18911.4.2 外接体的类型 18911.4.3 例程:Bounding Volumes 19011.5 小结 192第12章 设计一个灵活的Camera类 19312.1 Camera类的设计 19312.2 实现细节 19512.2.1 观察矩阵(取景变换矩阵,View Matrix)的计算 19512.2.2 绕任意轴的旋转 19812.2.3 俯仰、偏航和滚动 19912.2.4 行走、扫视和升降 20112.3 例程:Camera 20212.4 小结 205第13章 地形绘制基础 20613.1 高度图 20713.1.1 创建高度图 20713.1.2 加载RAW文件 20813.1.3 访问和修改高度图 20913.2 创建地形几何信息 21013.2.1 顶点的计算 21213.2.2 索引的计算 21413.3 纹理映射 21613.4 光照 21913.4.1 概述 21913.4.2 坐标方格的明暗度计算 22013.4.3 对地形进行着色 22213.5 在地形中“行走” 22213.6 例程:Terrain 22613.7 一些改进 22813.8 小结 229第14章 粒子系统 23014.1 粒子和点精灵 23014.1.1 结构格式 23014.1.2 点精灵的绘制状态 23114.1.3 粒子及其属性 23314.2 粒子系统的组成 23414.2.1 绘制一个粒子系统 23814.2.2 随机性 24314.3 具体的粒子系统 24314.3.1 例程:Snow System 24414.3.2 例程:Firework 24614.3.3 例程:Particle Gun 24814.4 小结 250第15章 拾取 25115.1 屏幕到投影窗口的变换 25315.2 拾取射线的计算 25415.3 对射线进行变换 25515.4 射线/物体相交判定 25615.5 例程:Picking 25815.6 小结 259第Ⅳ部分 着色器和效果第16章 高级着色语言(HLSL)入门 26316.1 HLSL着色器程序的编制 26416.1.1 全局变量 26616.1.2 输入和输出结构 26616.1.3 入口函数 26716.2 HLSL着色器程序的编译 26816.2.1 常量表 26816.2.2 HLSL着色器程序的编译 27216.3 变量类型 27416.3.1 标量类型 27416.3.2 向量类型 27416.3.3 矩阵类型 27516.3.4 数组 27716.3.5 结构体 27716.3.6 关键字typedef 27716.3.7 变量的前缀 27816.4 关键字、语句及类型转换 27916.4.1 关键字 27916.4.2 基本程序流程 27916.4.3 类型转换 28016.5 运算符 28116.6 用户自定义函数 28216.7 内置函数 28416.8 小结 286第17章 顶点着色器入门 28717.1 顶点声明 28817.1.1 顶点声明的描述 28817.1.2 顶点声明的创建 29117.1.3 顶点声明的启用 29117.2 顶点数据的使用 29117.3 使用顶点着色器的步骤 29317.3.1 顶点着色器的编写与编译 29417.3.2 顶点着色器的创建 29417.3.3 顶点着色器的设置 29417.3.4 顶点着色器的销毁 29517.4 例程:Diffuse Lighting 29517.5 例程:Cartoon Rendering 30217.5.1 卡通着色 30317.5.2 卡通着色的顶点着色器代码 30417.5.3 轮廓的勾勒 30717.5.4 实现轮廓勾勒的顶点着色器代码 31017.6 小结 312第18章 像素着色器入门 31318.1 多重纹理概述 31318.1.1 启用多重纹理 31518.1.2 多重纹理坐标 31618.2 像素着色器的输入和输出 31718.3 使用像素着色器的步骤 31818.3.1 像素着色器的编写和编译 31818.3.2 像素着色器的创建 31818.3.3 像素着色器的设置 31918.3.4 像素着色器的销毁 31918.4 HLSL采样器对象 31918.5 例程:像素着色器中的多重纹理 32118.6 小结 329第19章 效果框架 33119.1 手法与路径 33119.2 更多HLSL的内置对象 33319.2.1 纹理对象 33319.2.2 采样器对象与采样器状态 33319.2.3 顶点着色器对象和像素着色器对象 33419.2.4 字符串 33519.2.5 注释 33519.3 效果文件中的设备状态 33619.4 创建一种效果 33719.5 常量的设置 33819.6 使用一种效果 34019.6.1 效果句柄的获取 34119.6.2 效果的激活 34119.6.3 效果的启用 34119.6.4 当前绘制路径的设置 34219.6.5 效果的终止 34219.6.6 一个例子 34219.7 例程:效果文件中的光照和纹理 34319.8 例程:雾效 34919.9 例程:卡通效果 35219.10 EffectEdit 35319.11 小结 354
DirectX 9.0 3D游戏开发编程基础 内容提要:本书主要介绍如何使用DirectX 9.0开发交互式3D图形程序,重点是游戏开发。全书首先介绍了必要的数学工具,然后讲解了相关的3D概念。其他主题几乎涵盖了Direct3D中的所有基本运算,例如图元的绘制、光照、纹理、Alpha融合、模板,以及如何使用Direct3D实现游戏中所需的技术。介绍顶定点着色器和像素着色器的章节(包含了效果框架和新的高级着色语言的内容)对这些关键运算进行了较为集中的讨论。本书内容深入浅出,内容广泛,可供从事3D游戏程序设计、可视化系统设计或其他图形应用程序开发的开发人员和大中专院校学生参考,也极适合各种游戏开发培训机构作为Direct3D编程的培训教程。 DirectX 9.0 3D游戏开发编程基础 读后感:第Ⅰ部分 基础知识必备的数学知识 33D空间中的向量 3向量相等 7计算向量的长度 7向量的规范化 8向量加法 9向量减法 9数乘 10点积 11叉积 11矩阵 12矩阵相等、矩阵数乘和矩阵加法 13矩阵乘法 14单位矩阵 15逆矩阵 15矩阵的转置 16D3DX矩阵 16基本变换 19平移矩阵 20旋转矩阵 21比例变换矩阵 23几何变换的组合 24向量变换的一些函数 25平面(选读) 26D3DXPLANE 27点和平面的空间关系 27平面的创建 28平面的规范化 29平面的变换 29平面中到某一点的最近点 30射线(选读) 31射线 31射线与平面的相交 32小结 32第Ⅱ部分 Direct3D基础第1章 初始化Direct3D 371.1 Direct3D概述 371.1.1 REF设备 381.1.2 D3DDEVTYPE 381.2 COM(组件对象模型) 381.3 预备知识 391.3.1 表面 391.3.2 多重采样 411.3.3 像素格式 421.3.4 内存池 421.3.5 交换链和页面置换 431.3.6 深度缓存 441.3.7 顶点运算 451.3.8 设备性能 451.4 Direct3D的初始化 461.4.1 获取接口IDirect3D9的指针 471.4.2 校验硬件顶点运算 471.4.3 填充D3DPRESENT_PARAMETER结构 481.4.4 创建IDirect3DDevice9接口 501.5 例程:Direct3D的初始化 511.5.1 d3dUtility.h/cpp 521.5.2 例程框架 531.5.3 例程:D3D初始化 541.6 小结 56第2章 绘制流水线 582.1 模型表示 592.1.1 顶点格式 602.1.2 三角形单元 602.1.3 索引 612.2 虚拟摄像机 622.3 绘制流水线 632.3.1 局部坐标系 642.3.2 世界坐标系 642.3.3 观察坐标系 652.3.4 背面消隐 672.3.5 光照 682.3.6 裁剪 682.3.7 投影 692.3.8 视口变换 702.3.9 光栅化 722.4 小结 72第3章 Direct3D中的绘制 733.1 顶点缓存与索引缓存 733.1.1 创建顶点缓存和索引缓存 733.1.2 访问缓存内容 763.1.3 获取顶点缓存和索引缓存的信息 773.2 绘制状态 783.3 绘制的准备工作 783.4 使用顶点缓存和索引缓存进行绘制 793.4.1 IDirect3DDevice9::DrawPrimitive 793.4.2 IDirect3DDevice9::DrawIndexedPrimitive 803.4.3 Begin/End Scene 813.5 D3DX几何体 813.6 例程:三角形、立方体、茶壶、D3DXCreate* 833.7 小结 87第4章 颜色 894.1 颜色表示 894.2 顶点颜色 924.3 着色 924.4 例程:具有颜色的三角形 934.5 小结 95第5章 光照 975.1 光照的组成 975.2 材质 985.3 顶点法线 1005.4 光源 1025.5 例程:光照 1055.6 一些附加例程 1085.7 小结 108第6章 纹理映射 1096.1 纹理坐标 1106.2 创建并启用纹理 1116.3 纹理过滤器 1126.4 多级渐进纹理 1136.4.1 多级渐进纹理过滤器 1146.4.2 使用多级渐进纹理 1146.5 寻址模式 1146.6 例程:纹理四边形 1166.7 小结 118第7章 融合技术 1197.1 融合方程 1197.2 融合因子 1217.3 透明度 1227.3.1 Alpha通道 1227.3.2 指定Alpha来源 1237.4 用DirectX Texture Tool创建Alpha通道 1237.5 例程:透明效果 1257.6 小结 127第8章 模板 1288.1 模板缓存的使用 1298.1.1 模板缓存格式的查询 1298.1.2 模板测试 1308.1.3 模板测试的控制 1308.1.4 模板缓存的更新 1328.1.5 模板写掩码 1328.2 例程:镜面效果 1338.2.1 成像中的数学问题 1338.2.2 镜面效果实现概述 1348.2.3 代码解析 1358.3 例程:Planer Shadows 1398.3.1 平行光阴影 1398.3.2 点光源产生的阴影 1408.3.3 阴影矩阵 1418.3.4 使用模板缓存防止二次融合 1428.3.5 代码解析 1438.4 小结 144第Ⅲ部分 Direct3D的应用第9章 字体 1499.1 ID3DXFont接口 1499.1.1 创建一个ID3DXFont接口对象 1499.1.2 绘制文本 1509.1.3 计算每秒绘制的帧数 1519.2 CD3DFont 1529.2.1 创建CD3DFont类的实例 1529.2.2 绘制文本 1529.2.3 清理 1539.3 D3DXCreateText函数 1539.4 小结 155第10章 网格(一) 15610.1 几何信息 15610.2 子集和属性缓存 15710.3 绘制 15910.4 网格优化 15910.5 属性表 16110.6 邻接信息 16310.7 克隆 16410.8 创建网格(D3DXCreateMeshFVF) 16510.9 例程:网格的创建与绘制 16710.10 小结 172第11章 网格(二) 17411.1 ID3DXBuffer 17411.2 XFile 17511.2.1 加载XFile文件 17511.2.2 XFile材质 17611.2.3 例程:XFile 17711.2.4 生成顶点法线 18011.3 渐进网格 18111.3.1 生成渐进网格 18211.3.2 顶点属性权值 18311.3.3 ID3DXPMesh接口方法 18311.3.4 例程:Progressive Mesh 18411.4 外接体 18711.4.1 一些新的特殊常量 18911.4.2 外接体的类型 18911.4.3 例程:Bounding Volumes 19011.5 小结 192第12章 设计一个灵活的Camera类 19312.1 Camera类的设计 19312.2 实现细节 19512.2.1 观察矩阵(取景变换矩阵,View Matrix)的计算 19512.2.2 绕任意轴的旋转 19812.2.3 俯仰、偏航和滚动 19912.2.4 行走、扫视和升降 20112.3 例程:Camera 20212.4 小结 205第13章 地形绘制基础 20613.1 高度图 20713.1.1 创建高度图 20713.1.2 加载RAW文件 20813.1.3 访问和修改高度图 20913.2 创建地形几何信息 21013.2.1 顶点的计算 21213.2.2 索引的计算 21413.3 纹理映射 21613.4 光照 21913.4.1 概述 21913.4.2 坐标方格的明暗度计算 22013.4.3 对地形进行着色 22213.5 在地形中“行走” 22213.6 例程:Terrain 22613.7 一些改进 22813.8 小结 229第14章 粒子系统 23014.1 粒子和点精灵 23014.1.1 结构格式 23014.1.2 点精灵的绘制状态 23114.1.3 粒子及其属性 23314.2 粒子系统的组成 23414.2.1 绘制一个粒子系统 23814.2.2 随机性 24314.3 具体的粒子系统 24314.3.1 例程:Snow System 24414.3.2 例程:Firework 24614.3.3 例程:Particle Gun 24814.4 小结 250第15章 拾取 25115.1 屏幕到投影窗口的变换 25315.2 拾取射线的计算 25415.3 对射线进行变换 25515.4 射线/物体相交判定 25615.5 例程:Picking 25815.6 小结 259第Ⅳ部分 着色器和效果第16章 高级着色语言(HLSL)入门 26316.1 HLSL着色器程序的编制 26416.1.1 全局变量 26616.1.2 输入和输出结构 26616.1.3 入口函数 26716.2 HLSL着色器程序的编译 26816.2.1 常量表 26816.2.2 HLSL着色器程序的编译 27216.3 变量类型 27416.3.1 标量类型 27416.3.2 向量类型 27416.3.3 矩阵类型 27516.3.4 数组 27716.3.5 结构体 27716.3.6 关键字typedef 27716.3.7 变量的前缀 27816.4 关键字、语句及类型转换 27916.4.1 关键字 27916.4.2 基本程序流程 27916.4.3 类型转换 28016.5 运算符 28116.6 用户自定义函数 28216.7 内置函数 28416.8 小结 286第17章 顶点着色器入门 28717.1 顶点声明 28817.1.1 顶点声明的描述 28817.1.2 顶点声明的创建 29117.1.3 顶点声明的启用 29117.2 顶点数据的使用 29117.3 使用顶点着色器的步骤 29317.3.1 顶点着色器的编写与编译 29417.3.2 顶点着色器的创建 29417.3.3 顶点着色器的设置 29417.3.4 顶点着色器的销毁 29517.4 例程:Diffuse Lighting 29517.5 例程:Cartoon Rendering 30217.5.1 卡通着色 30317.5.2 卡通着色的顶点着色器代码 30417.5.3 轮廓的勾勒 30717.5.4 实现轮廓勾勒的顶点着色器代码 31017.6 小结 312第18章 像素着色器入门 31318.1 多重纹理概述 31318.1.1 启用多重纹理 31518.1.2 多重纹理坐标 31618.2 像素着色器的输入和输出 31718.3 使用像素着色器的步骤 31818.3.1 像素着色器的编写和编译 31818.3.2 像素着色器的创建 31818.3.3 像素着色器的设置 31918.3.4 像素着色器的销毁 31918.4 HLSL采样器对象 31918.5 例程:像素着色器中的多重纹理 32118.6 小结 329第19章 效果框架 33119.1 手法与路径 33119.2 更多HLSL的内置对象 33319.2.1 纹理对象 33319.2.2 采样器对象与采样器状态 33319.2.3 顶点着色器对象和像素着色器对象 33419.2.4 字符串 33519.2.5 注释 33519.3 效果文件中的设备状态 33619.4 创建一种效果 33719.5 常量的设置 33819.6 使用一种效果 34019.6.1 效果句柄的获取 34119.6.2 效果的激活 34119.6.3 效果的启用 34119.6.4 当前绘制路径的设置 34219.6.5 效果的终止 34219.6.6 一个例子 34219.7 例程:效果文件中的光照和纹理 34319.8 例程:雾效 34919.9 例程:卡通效果 35219.10 EffectEdit 35319.11 小结 354附录 Windows编程入门 355参考文献 372 追问 这就是个目录吧 追答 .