Managed DirectX 9.0 SDK
Summer 2004 中文文档
译者:Wu Jie & Liu Kang
创建时间:2006-10-23
译者序
本中文文档根据Microsoft公开发布的DirectX SDK Summer 2004 帮助文档英文版翻译,不得用于
商业用途,仅供学习交流参考。翻译内容选自官方帮助文档中关于Managed DirectX的章节,略去API
Library规范参考。限于译者水平,文档中可能存在错误,欢迎指正,译者将不定期对此进行修正。目前
DirectX SDK版本最新版本为October 2006,但文档内容变化不大,如该文档有重大更新,译者将适时
发布新版中文文档。由于翻译工作利用业余时间进行,如不能及时更新文档请见谅。Managed
DirectX 9.0 SDK帮助文档英文版所有权归Microsoft Corp所有,中文文档所有权归译者(排名
不分先后)拥有,特此声明。译者联系方式:gmmywin@gmail.com(Wu Jie)、luck@nj13z.cn
(Liu Kang)。
目录
第 1 章
目录................................................................................................................. - 1 -
前言................................................................................................................- 10 -
托管代码版DirectX 9.0 ..................................................................- 10 -
第 1 节 目的 ......................................................................................- 10 -
第 2 节 可用于何处 ..............................................................................- 10 -
第 3 节 开发者对象 ..............................................................................- 11 -
第 4 节 运行时需求 ..............................................................................- 11 -
托管代码版DirectX 9.0 介绍............................................................- 11 -
第 1 节 托管代码版DirectX 9.0...............................................................- 11 -
第 2 节 组件 ......................................................................................- 11 -
第 3 节 托管代码版DirectX 9.0 的优点 ......................................................- 12 -
第 4 节 需求 ......................................................................................- 12 -
第 2 章
- 1 -
第 3 章
第 4 章
第 2 章
什么是托管代码? .........................................................................- 12 -
使用托管代码的提示和技巧 ..............................................................- 12 -
第 1 节 托管代码版DirectX 9.0 起步.........................................................- 12 -
第 2 节 使用简单的应用程序 ...................................................................- 13 -
第 3 节 类的继承 .................................................................................- 13 -
第 4 节 调试DirectX应用程序 .................................................................- 13 -
第 5 节 使用Visual Studio .NET 2003 里的DirectX托管版文档 .......................- 13 -
第 6 节 使用DirectX Help文件................................................................- 14 -
第 7 节 重新发布DX .............................................................................- 14 -
Direct3D起步 ....................................................................................- 15 -
3-D坐标系和几何学.......................................................................- 15 -
第 1 节
3-D坐标系..............................................................................- 15 -
第 2 节 面和顶点法向量.........................................................................- 16 -
第 3 节
3-D造型 ................................................................................- 19 -
第 4 节 光栅化规则 ..............................................................................- 20 -
4.1 三角形光栅化规则 .........................................................................- 20 -
4.2 点和线规则 .................................................................................- 23 -
4.3 点精灵规则 .................................................................................- 23 -
第 5 节 矩形 ......................................................................................- 23 -
第 6 节 三角形内插值 ...........................................................................- 24 -
第 7 节 向量、顶点和四元数 ...................................................................- 24 -
设备..........................................................................................- 25 -
第 1 节 设备类型 .................................................................................- 26 -
1.1 硬件设备 ...............................................................................- 26 -
1.2 引用设备 ....................................................................................- 26 -
第 2 节 建立 1 个设备 ...........................................................................- 27 -
第 3 节 选择 1 个设备 ...........................................................................- 27 -
第 4 节 丢失设备 .................................................................................- 28 -
4.1 响应丢失设备...............................................................................- 29 -
4.2 锁定操作 ....................................................................................- 29 -
4.3 资源..........................................................................................- 29 -
4.4 获得返回数据...............................................................................- 29 -
4.5 可编程着色器...............................................................................- 30 -
第 5 节 检测硬件支持 ...........................................................................- 30 -
第 6 节 处理顶点数据 ...........................................................................- 30 -
第 7 节 设备支持的造型类型 ...................................................................- 31 -
7.1 点列表 .......................................................................................- 31 -
7.2 线列表 .......................................................................................- 32 -
7.3 线条带 .......................................................................................- 32 -
7.4 三角形列表 .................................................................................- 32 -
7.5 三角形条带 .................................................................................- 33 -
7.6 三角形扇 ....................................................................................- 33 -
资源..........................................................................................- 34 -
第 1 节 资源属性 .................................................................................- 34 -
第 1 篇
第 1 章
第 3 章
- 2 -
第 4 章
第 5 章
第 2 节 操纵资源 .................................................................................- 35 -
第 3 节 锁定资源 .................................................................................- 35 -
第 4 节 管理资源 .................................................................................- 36 -
第 5 节 应用程序托管资源和分配策略 ........................................................- 36 -
变换..........................................................................................- 36 -
第 1 节 视点变换 .................................................................................- 37 -
1.1 什么是视点变换? .........................................................................- 37 -
1.2 建立 1 个视点矩阵 .........................................................................- 38 -
第 2 节 世界变换 .................................................................................- 38 -
2.1 什么是世界变换? .........................................................................- 38 -
2.2 建立 1 个世界矩阵 .........................................................................- 39 -
第 3 节 矩阵 ......................................................................................- 40 -
3.1 3-D变换 .....................................................................................- 40 -
3.2 平移和缩放 .................................................................................- 42 -
3.2.1 平移 .................................................................................- 42 -
3.2.2 缩放 .................................................................................- 42 -
3.3 旋转..........................................................................................- 43 -
3.4 矩阵串联 ....................................................................................- 44 -
第 4 节 投影变换 .................................................................................- 44 -
4.1 什么是投影变换? .........................................................................- 45 -
4.2 建立 1 个投影矩阵 .........................................................................- 46 -
4.3 1 个W-友好的投影矩阵 ...................................................................- 47 -
Direct3D渲染 ..........................................................................- 48 -
第 1 节 着色 ......................................................................................- 48 -
1.1 着色模式 ....................................................................................- 48 -
1.1.1 平面着色 ............................................................................- 48 -
1.1.2 高洛德着色 .........................................................................- 48 -
1.2 比较着色模式...............................................................................- 49 -
1.3 设置着色模式...............................................................................- 50 -
第 2 节 显示场景 .................................................................................- 50 -
2.1 显示 1 个场景的简介 ......................................................................- 50 -
2.2 窗口模式下的多视角.......................................................................- 51 -
2.3 多显示器操作...............................................................................- 51 -
2.4 操纵深度缓存...............................................................................- 52 -
2.5 访问前台缓存色彩 .........................................................................- 52 -
第 3 节 渲染造型 .................................................................................- 52 -
3.1 顶点数据流 .................................................................................- 52 -
3.2 设置流源 ....................................................................................- 53 -
3.3 从顶点和索引缓存渲染....................................................................- 53 -
3.3.1 无索引绘制 2 个三角形 ...........................................................- 53 -
3.3.2 索引绘制 2 个三角形 ..............................................................- 54 -
3.3.3 索引绘制 1 个三角形 ..............................................................- 55 -
3.3.4 偏移量索引绘制 1 个三角形......................................................- 56 -
3.4 从用户内存指针渲染.......................................................................- 57 -
- 3 -
第 4 节 深度缓存 .................................................................................- 57 -
4.1 查询深度缓存支持 .........................................................................- 59 -
4.2 建立 1 个深度缓存 .........................................................................- 61 -
4.3 启用深度缓存...............................................................................- 62 -
4.4 获取深度缓存的返回值....................................................................- 63 -
4.5 清除深度缓存...............................................................................- 64 -
4.6 改变深度缓存的写入访问 .................................................................- 64 -
4.7 改变深度缓存的比较函数 .................................................................- 65 -
4.8 使用Z-斜线 .................................................................................- 67 -
第 5 节 雾化 ......................................................................................- 68 -
5.1 雾化公式 ....................................................................................- 69 -
5.1.1 线性雾化 ............................................................................- 69 -
5.1.2 指数雾化 ............................................................................- 69 -
5.2 雾化参数 ....................................................................................- 70 -
5.3 雾化混合 ....................................................................................- 71 -
5.4 雾化色彩 ....................................................................................- 71 -
5.5 顶点雾化 ....................................................................................- 72 -
5.5.1 基于范围的雾化....................................................................- 72 -
5.5.2 使用顶点雾化.......................................................................- 73 -
5.6 像素雾化 ....................................................................................- 74 -
5.6.1 眼睛相关的VS基于Z轴的缓存 ....................................................- 74 -
5.6.2 使用像素雾化.......................................................................- 75 -
Alpha混合..............................................................................- 76 -
6.1 顶点Alpha ..................................................................................- 77 -
6.2 材质Alpha ..................................................................................- 80 -
6.3 纹理Alpha ..................................................................................- 80 -
6.4 帧缓存Alpha ...............................................................................- 83 -
6.5 渲染目标Alpha ............................................................................- 85 -
6.6 公告板 .......................................................................................- 86 -
6.7 云、烟和水汽...............................................................................- 86 -
6.8 火焰、闪光和爆炸 .........................................................................- 87 -
Direct3D表面 ..........................................................................- 87 -
第 1 节 表面格式 .................................................................................- 88 -
1.1 无符号格式 .................................................................................- 89 -
1.2 有符号格式 .................................................................................- 90 -
1.3 混合格式 ....................................................................................- 90 -
1.4 四字符编码格式 ............................................................................- 90 -
1.5 MAKEFOURCC ............................................................................- 90 -
1.6 Buffer 缓冲器格式 ........................................................................- 92 -
1.7 浮点格式 ....................................................................................- 93 -
1.8 IEEE 格式 ..................................................................................- 93 -
1.9 其他..........................................................................................- 93 -
1.10 后台缓存或显示格式.....................................................................- 93 -
1.11 备注 ........................................................................................- 94 -
第 6 节
第 6 章
- 4 -
第 7 章
第 8 章
1.12 相关主题 ..................................................................................- 94 -
第 2 节 什么是 1 个交换链表? ................................................................- 94 -
第 3 节 宽度VS间距 .............................................................................- 95 -
第 4 节 翻转表面 .................................................................................- 95 -
第 5 节 页面翻转和后台缓冲 ...................................................................- 96 -
第 6 节 复制到表面 ..............................................................................- 97 -
第 7 节 复制表面 .................................................................................- 97 -
第 8 节 直接访问表面内存 ......................................................................- 97 -
第 9 节 私有表面数据 ...........................................................................- 98 -
第 10 节 伽玛控制 ...............................................................................- 98 -
10.1 伽玛控制级别 .............................................................................- 99 -
10.2 设置并获取Gamma Ramp级别的返回值............................................- 99 -
Direct3D纹理 ........................................................................ - 100 -
第 1 节 基本纹理概念 ......................................................................... - 100 -
第 2 节 纹理寻址模式 ......................................................................... - 100 -
2.1 设置寻址模式............................................................................. - 101 -
2.2 设备限制 .................................................................................. - 102 -
2.3 外包纹理寻址模式 ....................................................................... - 102 -
2.4 镜像纹理寻址模式 ....................................................................... - 103 -
2.5 夹钳纹理寻址模式 ....................................................................... - 103 -
2.6 边框色彩纹理寻址模式.................................................................. - 104 -
第 3 节 纹理噪点区域 ......................................................................... - 105 -
第 4 节 纹理调色板 ............................................................................ - 106 -
第 5 节 加载 1 个纹理 ......................................................................... - 106 -
Direct3D指南 ........................................................................ - 107 -
第 1 节 建立 1 个设备 ......................................................................... - 108 -
1.1 路径........................................................................................ - 108 -
1.2 过程........................................................................................ - 108 -
1.2.1 建立 1 个程序窗体............................................................... - 108 -
1.2.2 初始化Direct3D对象 ........................................................... - 109 -
1.2.3 渲染Direct3D对象 .............................................................. - 110 -
第 2 节 渲染顶点 ............................................................................... - 112 -
2.1 路径........................................................................................ - 112 -
2.2 过程........................................................................................ - 112 -
第 3 节 使用矩阵 ............................................................................... - 115 -
3.1 路径........................................................................................ - 115 -
3.2 过程........................................................................................ - 115 -
第 4 节 使用材质和光照....................................................................... - 119 -
4.1 路径........................................................................................ - 119 -
4.2 过程........................................................................................ - 119 -
4.2.1 初始化 1 个深度模版 ............................................................ - 119 -
4.2.2 初始化顶点缓存和渲染状态 .................................................... - 120 -
4.2.3 建立圆柱体对象.................................................................. - 121 -
4.2.4 建立 1 个材质 .................................................................... - 122 -
- 5 -
第 9 章
第 1 节
第 2 节
4.2.5 建立 1 个光源 .................................................................... - 123 -
第 5 节 使用纹理映射 ......................................................................... - 124 -
5.1 路径........................................................................................ - 124 -
5.2 过程........................................................................................ - 124 -
5.2.1 建立纹理 .......................................................................... - 124 -
5.2.2 载入纹理数据..................................................................... - 125 -
5.2.3 渲染场景 .......................................................................... - 127 -
第 6 节 使用网格 ............................................................................... - 128 -
6.1 路径........................................................................................ - 128 -
6.2 过程........................................................................................ - 128 -
6.2.1 初始化 1 个网格对象 ............................................................ - 129 -
6.2.2 载入 1 个网格对象............................................................... - 130 -
6.2.3 渲染 1 个网格对象............................................................... - 132 -
Direct3D托管代码范例 ............................................................. - 133 -
BasicHLSL范例 ..................................................................... - 133 -
1.1 路径........................................................................................ - 134 -
1.2 范例概览 .................................................................................. - 134 -
1.3 范例是如何工作的 ....................................................................... - 134 -
CustomUI范例 ...................................................................... - 135 -
2.1 路径........................................................................................ - 135 -
2.2 范例是如何工作的 ....................................................................... - 135 -
2.3 事件........................................................................................ - 136 -
EmptyProject范例 ................................................................. - 136 -
3.1 路径........................................................................................ - 136 -
3.2 范例概览 .................................................................................. - 137 -
3.3 范例是如何工作的 ....................................................................... - 137 -
EnhancedMesh范例 ............................................................... - 137 -
4.1 路径........................................................................................ - 137 -
4.2 范例是如何工作的 ....................................................................... - 137 -
FragmentLinker范例 .............................................................. - 137 -
5.1 路径........................................................................................ - 138 -
5.2 范例概览 .................................................................................. - 138 -
5.3 范例是如何工作的 ....................................................................... - 138 -
HDRCubeMap范例 ................................................................. - 141 -
6.1 路径........................................................................................ - 141 -
6.2 使用手册 .................................................................................. - 141 -
6.3 范例概览 .................................................................................. - 142 -
6.4 执行........................................................................................ - 142 -
6.5 渲染代码 .................................................................................. - 142 -
6.6 着色器 ..................................................................................... - 143 -
6.7 高动态范围真实感 ....................................................................... - 143 -
6.8 折中选择 .................................................................................. - 145 -
HLSLwithoutEffects范例 ......................................................... - 145 -
7.1 路径........................................................................................ - 146 -
第 3 节
第 6 节
第 4 节
第 5 节
第 7 节
- 6 -
第 8 节
第 9 节
第 2 篇
第 1 章
第 10 节
第 11 节
7.2 范例概览 .................................................................................. - 146 -
7.3 范例是如何工作的 ....................................................................... - 146 -
ProgressiveMesh范例............................................................. - 147 -
8.1 路径........................................................................................ - 147 -
8.2 范例是如何工作的 ....................................................................... - 147 -
PrtPerVertex范例 .................................................................. - 148 -
9.1 路径........................................................................................ - 148 -
9.2 为什么这个例子很有趣? ............................................................... - 148 -
9.3 范例概览 .................................................................................. - 148 -
9.4 这个例子是如何工作的.................................................................. - 148 -
9.4.1 步骤 1:脱机处理 ............................................................... - 148 -
9.4.2 步骤 2:实时渲染 ............................................................... - 149 -
9.5 限制条件 .................................................................................. - 151 -
9.6 图像资源 .................................................................................. - 152 -
C# Scripting范例................................................................. - 152 -
10.1 路径 ...................................................................................... - 152 -
10.2 范例概览 ................................................................................ - 152 -
10.3 范例是如何工作的 ..................................................................... - 152 -
10.4 安全考虑 ................................................................................ - 153 -
10.5 性能考虑 ................................................................................ - 154 -
10.6 执行考虑 ................................................................................ - 154 -
SimpleAnimation范例 ........................................................... - 155 -
11.1 路径 ...................................................................................... - 155 -
11.2 范例概览 ................................................................................ - 155 -
11.3 范例是如何工作的 ..................................................................... - 155 -
Text3D范例 ........................................................................ - 155 -
12.1 路径 ...................................................................................... - 155 -
12.2 编程须知 ................................................................................ - 155 -
DirectSound ............................................................................... - 156 -
声音播放 ............................................................................... - 156 -
第 1 节 回放概览 ............................................................................... - 156 -
第 2 节 设备 .................................................................................... - 157 -
2.1 枚举声音设备............................................................................. - 157 -
2.2 建立设备对象............................................................................. - 159 -
2.3 合作级别 .................................................................................. - 159 -
2.3.1 标准合作级别..................................................................... - 159 -
2.3.2 优先合作级别..................................................................... - 160 -
2.3.3 写优先合作级别.................................................................. - 160 -
2.4 设备功能 .................................................................................. - 160 -
2.5 扬声器配置 ............................................................................... - 160 -
2.6 压缩硬件内存............................................................................. - 161 -
第 3 节 缓存 .................................................................................... - 161 -
3.1 缓冲器初步 ............................................................................... - 161 -
3.2 建立次要缓冲器 .......................................................................... - 161 -
第 12 节
- 7 -
第 2 章
第 4 节
3.3 缓冲器描绘选项 .......................................................................... - 162 -
3.4 缓冲器控制选项 .......................................................................... - 162 -
3.5 缓冲器的 3D运算法则................................................................... - 163 -
3.6 填充和播放静态缓冲器.................................................................. - 163 -
3.7 使用流缓冲器............................................................................. - 164 -
3.8 回放控制 .................................................................................. - 165 -
3.9 播放游标和写入游标..................................................................... - 165 -
3.10 播放缓冲器公告 ........................................................................ - 166 -
3.11 混频音响 ................................................................................ - 166 -
3.12 丢弃和恢复缓冲器 ..................................................................... - 166 -
第 4 节 使用WAV数据......................................................................... - 167 -
3-D声音 ............................................................................... - 167 -
第 1 节
3-D空间坐标系 ...................................................................... - 167 -
第 2 节 声音位置的感知....................................................................... - 168 -
3-D缓存 .............................................................................. - 168 -
第 3 节
3.1 获取Buffer3D对象 ...................................................................... - 169 -
3.2 3-D缓存的批量参数 ..................................................................... - 169 -
3.3 最小和最大距离 .......................................................................... - 169 -
3.4 处理模式 .................................................................................. - 170 -
3.5 缓存位置和速度 .......................................................................... - 170 -
3.6 声音锥体 .................................................................................. - 171 -
3-D收听者............................................................................ - 172 -
4.1 获取 3-D收听者.......................................................................... - 172 -
4.2 3-D收听者的批量参数................................................................... - 172 -
4.3 延缓设置 .................................................................................. - 173 -
4.4 距离因子 .................................................................................. - 173 -
4.5 收听者方向 ............................................................................... - 173 -
4.6 收听者位置和速率 ....................................................................... - 174 -
4.7 多普勒因子 ............................................................................... - 174 -
4.8 高低频规律性衰减因子.................................................................. - 174 -
使用特效 ............................................................................... - 175 -
第 1 节 在缓存上设置特效 .................................................................... - 175 -
第 2 节 特效参数 ............................................................................... - 175 -
第 3 节 标准特效 ............................................................................... - 176 -
3.1 Chorus 合声 ............................................................................. - 177 -
3.2 Compression 压缩 ................................................................... - 177 -
3.3 Distortion 扭曲失真.................................................................... - 177 -
3.4 Echo 回声 ................................................................................ - 177 -
3.5 Environmental Reverberation环境回响........................................... - 177 -
3.6 Flange镶边 ............................................................................... - 178 -
3.7 Gargle漱口音 ............................................................................ - 178 -
3.8 Parametric Equalizer 参量均衡器 .................................................. - 178 -
3.9 Waves Reverberation声波回响...................................................... - 178 -
捕获波形 ............................................................................... - 179 -
第 3 章
第 4 章
- 8 -