出版社: 清华大学出版社
原作名: Introduction to 3D Game Programming with DirectX 9.0
译者: 段菲
出版年: 2007-4
页数: 373
定价: 46.00元
ISBN: 9787302130253
内容简介 · · · · · ·
《DirectX 9.0 3D游戏开发编程基础》主要介绍如何使用DirectX 9.0开发交互式3D图形程序,重点是游戏开发。全书首先介绍了必要的数学工具,然后讲解了相关的3D概念。其他主题几乎涵盖了Direct3D中的所有基本运算,例如图元的绘制、光照、纹理、Alpha融合、模板,以及如何使用Direct3D实现游戏中所需的技术。介绍顶定点着色器和像素着色器的章节(包含了效果框架和新的高级着色语言的内容)对这些关键运算进行了较为集中的讨论。
目录 · · · · · ·
第Ⅰ部分 基础知识
必备的数学知识 3
3D空间中的向量 3
向量相等 7
计算向量的长度 7
向量的规范化 8
向量加法 9
向量减法 9
数乘 10
点积 11
叉积 11
矩阵 12
矩阵相等、矩阵数乘和矩阵加法 13
矩阵乘法 14
单位矩阵 15
逆矩阵 15
矩阵的转置 16
D3DX矩阵 16
基本变换 19
平移矩阵 20
旋转矩阵 21
比例变换矩阵 23
几何变换的组合 24
向量变换的一些函数 25
平面(选读) 26
D3DXPLANE 27
点和平面的空间关系 27
平面的创建 28
平面的规范化 29
平面的变换 29
平面中到某一点的最近点 30
射线(选读) 31
射线 31
射线与平面的相交 32
小结 32
第Ⅱ部分 Direct3D基础
第1章 初始化Direct3D 37
1.1 Direct3D概述 37
1.1.1 REF设备 38
1.1.2 D3DDEVTYPE 38
1.2 COM(组件对象模型) 38
1.3 预备知识 39
1.3.1 表面 39
1.3.2 多重采样 41
1.3.3 像素格式 42
1.3.4 内存池 42
1.3.5 交换链和页面置换 43
1.3.6 深度缓存 44
1.3.7 顶点运算 45
1.3.8 设备性能 45
1.4 Direct3D的初始化 46
1.4.1 获取接口IDirect3D9的指针 47
1.4.2 校验硬件顶点运算 47
1.4.3 填充D3DPRESENT_PARAMETER结构 48
1.4.4 创建IDirect3DDevice9接口 50
1.5 例程:Direct3D的初始化 51
1.5.1 d3dUtility.h/cpp 52
1.5.2 例程框架 53
1.5.3 例程:D3D初始化 54
1.6 小结 56
第2章 绘制流水线 58
2.1 模型表示 59
2.1.1 顶点格式 60
2.1.2 三角形单元 60
2.1.3 索引 61
2.2 虚拟摄像机 62
2.3 绘制流水线 63
2.3.1 局部坐标系 64
2.3.2 世界坐标系 64
2.3.3 观察坐标系 65
2.3.4 背面消隐 67
2.3.5 光照 68
2.3.6 裁剪 68
2.3.7 投影 69
2.3.8 视口变换 70
2.3.9 光栅化 72
2.4 小结 72
第3章 Direct3D中的绘制 73
3.1 顶点缓存与索引缓存 73
3.1.1 创建顶点缓存和索引缓存 73
3.1.2 访问缓存内容 76
3.1.3 获取顶点缓存和索引缓存的信息 77
3.2 绘制状态 78
3.3 绘制的准备工作 78
3.4 使用顶点缓存和索引缓存进行绘制 79
3.4.1 IDirect3DDevice9::DrawPrimitive 79
3.4.2 IDirect3DDevice9::DrawIndexedPrimitive 80
3.4.3 Begin/End Scene 81
3.5 D3DX几何体 81
3.6 例程:三角形、立方体、茶壶、D3DXCreate* 83
3.7 小结 87
第4章 颜色 89
4.1 颜色表示 89
4.2 顶点颜色 92
4.3 着色 92
4.4 例程:具有颜色的三角形 93
4.5 小结 95
第5章 光照 97
5.1 光照的组成 97
5.2 材质 98
5.3 顶点法线 100
5.4 光源 102
5.5 例程:光照 105
5.6 一些附加例程 108
5.7 小结 108
第6章 纹理映射 109
6.1 纹理坐标 110
6.2 创建并启用纹理 111
6.3 纹理过滤器 112
6.4 多级渐进纹理 113
6.4.1 多级渐进纹理过滤器 114
6.4.2 使用多级渐进纹理 114
6.5 寻址模式 114
6.6 例程:纹理四边形 116
6.7 小结 118
第7章 融合技术 119
7.1 融合方程 119
7.2 融合因子 121
7.3 透明度 122
7.3.1 Alpha通道 122
7.3.2 指定Alpha来源 123
7.4 用DirectX Texture Tool创建Alpha通道 123
7.5 例程:透明效果 125
7.6 小结 127
第8章 模板 128
8.1 模板缓存的使用 129
8.1.1 模板缓存格式的查询 129
8.1.2 模板测试 130
8.1.3 模板测试的控制 130
8.1.4 模板缓存的更新 132
8.1.5 模板写掩码 132
8.2 例程:镜面效果 133
8.2.1 成像中的数学问题 133
8.2.2 镜面效果实现概述 134
8.2.3 代码解析 135
8.3 例程:Planer Shadows 139
8.3.1 平行光阴影 139
8.3.2 点光源产生的阴影 140
8.3.3 阴影矩阵 141
8.3.4 使用模板缓存防止二次融合 142
8.3.5 代码解析 143
8.4 小结 144
第Ⅲ部分 Direct3D的应用
第9章 字体 149
9.1 ID3DXFont接口 149
9.1.1 创建一个ID3DXFont接口对象 149
9.1.2 绘制文本 150
9.1.3 计算每秒绘制的帧数 151
9.2 CD3DFont 152
9.2.1 创建CD3DFont类的实例 152
9.2.2 绘制文本 152
9.2.3 清理 153
9.3 D3DXCreateText函数 153
9.4 小结 155
第10章 网格(一) 156
10.1 几何信息 156
10.2 子集和属性缓存 157
10.3 绘制 159
10.4 网格优化 159
10.5 属性表 161
10.6 邻接信息 163
10.7 克隆 164
10.8 创建网格(D3DXCreateMeshFVF) 165
10.9 例程:网格的创建与绘制 167
10.10 小结 172
第11章 网格(二) 174
11.1 ID3DXBuffer 174
11.2 XFile 175
11.2.1 加载XFile文件 175
11.2.2 XFile材质 176
11.2.3 例程:XFile 177
11.2.4 生成顶点法线 180
11.3 渐进网格 181
11.3.1 生成渐进网格 182
11.3.2 顶点属性权值 183
11.3.3 ID3DXPMesh接口方法 183
11.3.4 例程:Progressive Mesh 184
11.4 外接体 187
11.4.1 一些新的特殊常量 189
11.4.2 外接体的类型 189
11.4.3 例程:Bounding Volumes 190
11.5 小结 192
第12章 设计一个灵活的Camera类 193
12.1 Camera类的设计 193
12.2 实现细节 195
12.2.1 观察矩阵(取景变换矩阵,View Matrix)的计算 195
12.2.2 绕任意轴的旋转 198
12.2.3 俯仰、偏航和滚动 199
12.2.4 行走、扫视和升降 201
12.3 例程:Camera 202
12.4 小结 205
第13章 地形绘制基础 206
13.1 高度图 207
13.1.1 创建高度图 207
13.1.2 加载RAW文件 208
13.1.3 访问和修改高度图 209
13.2 创建地形几何信息 210
13.2.1 顶点的计算 212
13.2.2 索引的计算 214
13.3 纹理映射 216
13.4 光照 219
13.4.1 概述 219
13.4.2 坐标方格的明暗度计算 220
13.4.3 对地形进行着色 222
13.5 在地形中“行走” 222
13.6 例程:Terrain 226
13.7 一些改进 228
13.8 小结 229
第14章 粒子系统 230
14.1 粒子和点精灵 230
14.1.1 结构格式 230
14.1.2 点精灵的绘制状态 231
14.1.3 粒子及其属性 233
14.2 粒子系统的组成 234
14.2.1 绘制一个粒子系统 238
14.2.2 随机性 243
14.3 具体的粒子系统 243
14.3.1 例程:Snow System 244
14.3.2 例程:Firework 246
14.3.3 例程:Particle Gun 248
14.4 小结 250
第15章 拾取 251
15.1 屏幕到投影窗口的变换 253
15.2 拾取射线的计算 254
15.3 对射线进行变换 255
15.4 射线/物体相交判定 256
15.5 例程:Picking 258
15.6 小结 259
第Ⅳ部分 着色器和效果
第16章 高级着色语言(HLSL)入门 263
16.1 HLSL着色器程序的编制 264
16.1.1 全局变量 266
16.1.2 输入和输出结构 266
16.1.3 入口函数 267
16.2 HLSL着色器程序的编译 268
16.2.1 常量表 268
16.2.2 HLSL着色器程序的编译 272
16.3 变量类型 274
16.3.1 标量类型 274
16.3.2 向量类型 274
16.3.3 矩阵类型 275
16.3.4 数组 277
16.3.5 结构体 277
16.3.6 关键字typedef 277
16.3.7 变量的前缀 278
16.4 关键字、语句及类型转换 279
16.4.1 关键字 279
16.4.2 基本程序流程 279
16.4.3 类型转换 280
16.5 运算符 281
16.6 用户自定义函数 282
16.7 内置函数 284
16.8 小结 286
第17章 顶点着色器入门 287
17.1 顶点声明 288
17.1.1 顶点声明的描述 288
17.1.2 顶点声明的创建 291
17.1.3 顶点声明的启用 291
17.2 顶点数据的使用 291
17.3 使用顶点着色器的步骤 293
17.3.1 顶点着色器的编写与编译 294
17.3.2 顶点着色器的创建 294
17.3.3 顶点着色器的设置 294
17.3.4 顶点着色器的销毁 295
17.4 例程:Diffuse Lighting 295
17.5 例程:Cartoon Rendering 302
17.5.1 卡通着色 303
17.5.2 卡通着色的顶点着色器代码 304
17.5.3 轮廓的勾勒 307
17.5.4 实现轮廓勾勒的顶点着色器代码 310
17.6 小结 312
第18章 像素着色器入门 313
18.1 多重纹理概述 313
18.1.1 启用多重纹理 315
18.1.2 多重纹理坐标 316
18.2 像素着色器的输入和输出 317
18.3 使用像素着色器的步骤 318
18.3.1 像素着色器的编写和编译 318
18.3.2 像素着色器的创建 318
18.3.3 像素着色器的设置 319
18.3.4 像素着色器的销毁 319
18.4 HLSL采样器对象 319
18.5 例程:像素着色器中的多重纹理 321
18.6 小结 329
第19章 效果框架 331
19.1 手法与路径 331
19.2 更多HLSL的内置对象 333
19.2.1 纹理对象 333
19.2.2 采样器对象与采样器状态 333
19.2.3 顶点着色器对象和像素着色器对象 334
19.2.4 字符串 335
19.2.5 注释 335
19.3 效果文件中的设备状态 336
19.4 创建一种效果 337
19.5 常量的设置 338
19.6 使用一种效果 340
19.6.1 效果句柄的获取 341
19.6.2 效果的激活 341
19.6.3 效果的启用 341
19.6.4 当前绘制路径的设置 342
19.6.5 效果的终止 342
19.6.6 一个例子 342
19.7 例程:效果文件中的光照和纹理 343
19.8 例程:雾效 349
19.9 例程:卡通效果 352
19.10 EffectEdit 353
19.11 小结 354
附录 Windows编程入门 355
参考文献 372
· · · · · · (收起)
喜欢读"DirectX 9.0 3D游戏开发编程基础"的人也喜欢的电子书 · · · · · ·
喜欢读"DirectX 9.0 3D游戏开发编程基础"的人也喜欢 · · · · · ·
DirectX 9.0 3D游戏开发编程基础的书评 · · · · · · ( 全部 15 条 )

作者Frank维护的该书相关资源的网站地址更新

一本很不错的 DirectX 9 的入门书

Frank Luna大叔的品质保证

> 更多书评 15篇
-
配书网站和示例代码 d3dcoder [https://d3dcoder.net/] 作者 Frank D. Luna 的网站 示例代码下载 我的示例练习代码 [https://github.com/breaker/studies/tree/master/IntroD3D9] 使用 DirectX SDK August 2008 ---------- DirectX 参考文档与示例 DirectX Graphics and Gaming [https://docs.microsoft.com/en-us/windows/desktop/directx] DirectX programming: Developing UWP games with DirectX [https://docs.microsoft.c...
2018-08-17 15:22:59 1人喜欢
配书网站和示例代码
d3dcoder https://d3dcoder.net/ 作者 Frank D. Luna 的网站 示例代码下载
我的示例练习代码 https://github.com/breaker/studies/tree/master/IntroD3D9 使用 DirectX SDK August 2008
---------- DirectX 参考文档与示例
DirectX Graphics and Gaming https://docs.microsoft.com/en-us/windows/desktop/directx
DirectX programming: Developing UWP games with DirectX https://docs.microsoft.com/en-us/windows/uwp/gaming/directx-programming
DirectX-Graphics-Samples https://github.com/Microsoft/DirectX-Graphics-Samples This repo contains the DirectX 12 Graphics samples that demonstrate how to build graphics intensive applications for Windows 10.
---------- DXUT https://github.com/Microsoft/DXUT DXUT Tutorial Win32 Sample https://code.msdn.microsoft.com/windowsdesktop/DXUT-Tutorial-Win32-Sample-fe15e440 Basic DXUT Win32 Sample https://code.msdn.microsoft.com/windowsdesktop/Basic-DXUT-Win32-Samples-e59c0682
---------- 注意区别 DirectX SDK 和 DirectX End-User Runtime 前者为开发 DirectX 程序时使用,包括调试版本的 DirectX 库、开发工具及示例代码。 后者为部署 DirectX 程序时使用,独立于 DirectX SDK 的发布和更新。 Windows 系统也会附带一份 DirectX Runtime,独立安装的 DirectX End-User Runtime 可能与系统附带的 DirectX 组件的版本不同,它们一般可以共存。
DirectX SDK (June 2010) (2010.6) https://www.microsoft.com/en-us/download/details.aspx?id=6812 安装包 DXSDK_Jun10.exe 支持 D3D9, D3D10, D3D11 包含 D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3, XACT, Managed DirectX 1.1 D3DX 已废弃,它被拆分成多个库 DirectXMath (XNAMath), DirectXTex, D3DCompile
对应的 DirectX End-User Runtimes (June 2010) (2021.2) https://www.microsoft.com/en-us/download/details.aspx?id=8109
DirectX SDK June 2010 是最后一个独立发布的 DirectX SDK 之后 DirectX SDK 被合并到 Windows SDK 中 [从 Win8 SDK 开始] Windows SDK 7.1 只包含 DirectX SDK 的一部分,没有包含 D3DX 库
Where is the DirectX SDK https://msdn.microsoft.com/en-us/library/windows/desktop/ee663275.aspx Where is the DirectX SDK, by Chuck Walbourn (2012.3) https://blogs.msdn.microsoft.com/chuckw/2012/03/22/where-is-the-directx-sdk/ Where is the DirectX SDK (2015 Edition), by Chuck Walbourn (2015.8) https://blogs.msdn.microsoft.com/chuckw/2015/08/05/where-is-the-directx-sdk-2015-edition/
DXSDK June 2010 中去掉了 DirectX Viewer,这里有说明和独立下载地址 http://www.gamedev.net/topic/581092-june-2010-sdk-directx-viewer-missing-solved/
回应 2018-08-17 15:22:59 -
一直对生成观察坐标系函数的 pAt参数,即看向哪里有迷惑,昨天在洗澡的时候终于想明白了,这个参数只是用来确定观察的方向的(跟摄像机的位置一起确定), 而跟相机的焦距之类没有关系,原来想偏了, 所以在只要在观察方向上的任意点产生的效果都是一样的。今天进过实际测试也确实是这样的. 至于观察角度,焦距之类的则是投影矩阵决定的
2012-09-16 12:08:32
-
在陪老婆去公园散步的去想到了一个实现灰色效果的方法,所谓灰色,其实就是r,g,b颜色值都相等的所有颜色,具体实现就是取r,g,b中值最大的,让后将其他颜色都设成这个值,PS实现起来比较简单: PS_OUTPUT Main(PS_INPUT input) { PS_OUTPUT output = (PS_OUTPUT)0; vector c = tex2D(InputTex,input.texCoord); // get the max value of r,g,b float maxValue = c.r; if (c.g > maxValue) { maxValue = c.g; } if (c.b > maxValu... (1回应)
2012-09-14 11:58:05
在陪老婆去公园散步的去想到了一个实现灰色效果的方法,所谓灰色,其实就是r,g,b颜色值都相等的所有颜色,具体实现就是取r,g,b中值最大的,让后将其他颜色都设成这个值,PS实现起来比较简单: PS_OUTPUT Main(PS_INPUT input) { PS_OUTPUT output = (PS_OUTPUT)0; vector c = tex2D(InputTex,input.texCoord); // get the max value of r,g,b float maxValue = c.r; if (c.g > maxValue) { maxValue = c.g; } if (c.b > maxValue) { maxValue = c.b; } c.r = c.g = c.b = maxValue; output.diffuse = c; return output; } 实现这个功能后,对PS有了一点感觉了,对个像素的控制真是直接,灵活啊
1回应 2012-09-14 11:58:05 -
坑爹的QQ2012Beta3 截图功能显示的像素数竟然不正确, 让我折腾两个晚上. 本来我设置视口为640*480,可是用QQ截图测出来总是差几个像素,搞得我以为那里搞错了,找来找去找不到,后来用另外一款截图软件测量,竟然是对的,这才确定是QQ截图工具的问题,于是发到了他们的问题反馈,不过看那N多页问题,估计我的问题也只会石沉大海吧 不过通过这个还弄明白了一些问题, 就是你设置视口大小和最终显示的大小的关系,他们并不一致的, 而是跟后...
2012-09-14 11:29:06
坑爹的QQ2012Beta3 截图功能显示的像素数竟然不正确, 让我折腾两个晚上. 本来我设置视口为640*480,可是用QQ截图测出来总是差几个像素,搞得我以为那里搞错了,找来找去找不到,后来用另外一款截图软件测量,竟然是对的,这才确定是QQ截图工具的问题,于是发到了他们的问题反馈,不过看那N多页问题,估计我的问题也只会石沉大海吧 不过通过这个还弄明白了一些问题, 就是你设置视口大小和最终显示的大小的关系,他们并不一致的, 而是跟后台缓存区和窗口的显示区域比例有关, 其关系应该是 : 视口大小/最终显示大小 = 后台区域大小/窗口显示区域大小 另外窗口的显示区域的函数是GetWindowRect, 但这里有个比较迷惑的问题,就是微软的MSDN解释说这个函数得出的长宽是比实际的要多出一个像素的,即 RECT windowRect; ::GetWindowRect(hWnd,&windowRect); LONG realWidth = clientRect.right - 1 LONG realLength = clientRect.bottom - 1 而且我在以前的项目时也看过这样写的,但我在实际测试中的不减才是对的,不知掉是怎么回事呢 有大大帮我解释这个疑惑吗
回应 2012-09-14 11:29:06
-
Release和Delete模板函数有bug, 以Release为例 template<class T> void Release(T t) { if(t) { t->Release(); t = NULL; } } 这里传入的参数应该是指针,但t只是形参指针,所以t = NULL只对形参有效,而不会真正把外部指针置空,结果这么写和直接Release一样,二次调用同一对象会崩溃,修改的话很简单,只要把t改为传引用就好,也就是指针的引用了。 template<class T> void Release(T &t) { if(t) { t->...
2012-06-26 13:45:21
Release和Delete模板函数有bug, 以Release为例 template<class T> void Release(T t) { if(t) { t->Release(); t = NULL; } } 这里传入的参数应该是指针,但t只是形参指针,所以t = NULL只对形参有效,而不会真正把外部指针置空,结果这么写和直接Release一样,二次调用同一对象会崩溃,修改的话很简单,只要把t改为传引用就好,也就是指针的引用了。 template<class T> void Release(T &t) { if(t) { t->Release(); t = NULL; } }
回应 2012-06-26 13:45:21 -
麻子 (爱就爱 不要用慢动作)
InitD3D() 函数中,创建窗口使用了: hwnd = ::CreateWindow("Direct3D9App", "Direct3D9App", WS_EX_TOPMOST, 0, 0, width, height, 0 /*parent hwnd*/, 0 /* menu */, hInstance, 0 /*extra*/); 在CreateWindow() 函数的参数中,只有dwStyle,而并没有dwExStyle,所以,似乎这里的WS_EX_TOPMOST并不妥. 如果需要窗口置顶,可改为使用CreateWindowEx() ,并将第一个参数设为WS_EX_TOPMOST. 如下语句: ( Pascal ) Wnd := CreateWindowEx...2012-06-27 16:03:40
InitD3D() 函数中,创建窗口使用了:
hwnd = ::CreateWindow("Direct3D9App", "Direct3D9App", WS_EX_TOPMOST, 0, 0, width, height, 0 /*parent hwnd*/, 0 /* menu */, hInstance, 0 /*extra*/);
在CreateWindow() 函数的参数中,只有dwStyle,而并没有dwExStyle,所以,似乎这里的WS_EX_TOPMOST并不妥. 如果需要窗口置顶,可改为使用CreateWindowEx() ,并将第一个参数设为WS_EX_TOPMOST. 如下语句: ( Pascal )
Wnd := CreateWindowEx( WS_EX_TOPMOST, 'Direct3D9App', 'Direct3D9App', WS_OVERLAPPED, 0, 0, Width, Height, 0, 0, HInstance, nil); // Fixed
另外按照题意,InitD3D() 函数的长宽应该是窗口客户区的长宽,而CreateWindowEx()函数的长宽是整个窗口的,所以可添加如下代码调整窗口大小: ( Pascal )
Rect.Left := 0; // Resize the window Rect.Top := 0; Rect.Right := Width; Rect.Bottom := Height; if AdjustWindowRectEx( Rect, GetWindowLong(Wnd, GWL_STYLE), False, GetWindowLong(Wnd, GWL_EXSTYLE) ) then MoveWindow( Wnd, 50, 50, Rect.Right - Rect.Left, Rect.Bottom - Rect.Top, False);
回应 2012-06-27 16:03:40 -
@ck52110u @ctyFranky 像D3DXMatrixTranslation这类的函数,为什么有个第一个参数作为输出参数,又把输出参数作为返回值呢 另有有些函数以D3DX为前缀,有些又是D3D呢,还有些是Direct3D,这些命名有什么规律呢 (6回应)
2012-05-07 22:32:14
-
配书网站和示例代码 d3dcoder [https://d3dcoder.net/] 作者 Frank D. Luna 的网站 示例代码下载 我的示例练习代码 [https://github.com/breaker/studies/tree/master/IntroD3D9] 使用 DirectX SDK August 2008 ---------- DirectX 参考文档与示例 DirectX Graphics and Gaming [https://docs.microsoft.com/en-us/windows/desktop/directx] DirectX programming: Developing UWP games with DirectX [https://docs.microsoft.c...
2018-08-17 15:22:59 1人喜欢
配书网站和示例代码
d3dcoder https://d3dcoder.net/ 作者 Frank D. Luna 的网站 示例代码下载
我的示例练习代码 https://github.com/breaker/studies/tree/master/IntroD3D9 使用 DirectX SDK August 2008
---------- DirectX 参考文档与示例
DirectX Graphics and Gaming https://docs.microsoft.com/en-us/windows/desktop/directx
DirectX programming: Developing UWP games with DirectX https://docs.microsoft.com/en-us/windows/uwp/gaming/directx-programming
DirectX-Graphics-Samples https://github.com/Microsoft/DirectX-Graphics-Samples This repo contains the DirectX 12 Graphics samples that demonstrate how to build graphics intensive applications for Windows 10.
---------- DXUT https://github.com/Microsoft/DXUT DXUT Tutorial Win32 Sample https://code.msdn.microsoft.com/windowsdesktop/DXUT-Tutorial-Win32-Sample-fe15e440 Basic DXUT Win32 Sample https://code.msdn.microsoft.com/windowsdesktop/Basic-DXUT-Win32-Samples-e59c0682
---------- 注意区别 DirectX SDK 和 DirectX End-User Runtime 前者为开发 DirectX 程序时使用,包括调试版本的 DirectX 库、开发工具及示例代码。 后者为部署 DirectX 程序时使用,独立于 DirectX SDK 的发布和更新。 Windows 系统也会附带一份 DirectX Runtime,独立安装的 DirectX End-User Runtime 可能与系统附带的 DirectX 组件的版本不同,它们一般可以共存。
DirectX SDK (June 2010) (2010.6) https://www.microsoft.com/en-us/download/details.aspx?id=6812 安装包 DXSDK_Jun10.exe 支持 D3D9, D3D10, D3D11 包含 D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3, XACT, Managed DirectX 1.1 D3DX 已废弃,它被拆分成多个库 DirectXMath (XNAMath), DirectXTex, D3DCompile
对应的 DirectX End-User Runtimes (June 2010) (2021.2) https://www.microsoft.com/en-us/download/details.aspx?id=8109
DirectX SDK June 2010 是最后一个独立发布的 DirectX SDK 之后 DirectX SDK 被合并到 Windows SDK 中 [从 Win8 SDK 开始] Windows SDK 7.1 只包含 DirectX SDK 的一部分,没有包含 D3DX 库
Where is the DirectX SDK https://msdn.microsoft.com/en-us/library/windows/desktop/ee663275.aspx Where is the DirectX SDK, by Chuck Walbourn (2012.3) https://blogs.msdn.microsoft.com/chuckw/2012/03/22/where-is-the-directx-sdk/ Where is the DirectX SDK (2015 Edition), by Chuck Walbourn (2015.8) https://blogs.msdn.microsoft.com/chuckw/2015/08/05/where-is-the-directx-sdk-2015-edition/
DXSDK June 2010 中去掉了 DirectX Viewer,这里有说明和独立下载地址 http://www.gamedev.net/topic/581092-june-2010-sdk-directx-viewer-missing-solved/
回应 2018-08-17 15:22:59 -
一直对生成观察坐标系函数的 pAt参数,即看向哪里有迷惑,昨天在洗澡的时候终于想明白了,这个参数只是用来确定观察的方向的(跟摄像机的位置一起确定), 而跟相机的焦距之类没有关系,原来想偏了, 所以在只要在观察方向上的任意点产生的效果都是一样的。今天进过实际测试也确实是这样的. 至于观察角度,焦距之类的则是投影矩阵决定的
2012-09-16 12:08:32
-
在陪老婆去公园散步的去想到了一个实现灰色效果的方法,所谓灰色,其实就是r,g,b颜色值都相等的所有颜色,具体实现就是取r,g,b中值最大的,让后将其他颜色都设成这个值,PS实现起来比较简单: PS_OUTPUT Main(PS_INPUT input) { PS_OUTPUT output = (PS_OUTPUT)0; vector c = tex2D(InputTex,input.texCoord); // get the max value of r,g,b float maxValue = c.r; if (c.g > maxValue) { maxValue = c.g; } if (c.b > maxValu... (1回应)
2012-09-14 11:58:05
在陪老婆去公园散步的去想到了一个实现灰色效果的方法,所谓灰色,其实就是r,g,b颜色值都相等的所有颜色,具体实现就是取r,g,b中值最大的,让后将其他颜色都设成这个值,PS实现起来比较简单: PS_OUTPUT Main(PS_INPUT input) { PS_OUTPUT output = (PS_OUTPUT)0; vector c = tex2D(InputTex,input.texCoord); // get the max value of r,g,b float maxValue = c.r; if (c.g > maxValue) { maxValue = c.g; } if (c.b > maxValue) { maxValue = c.b; } c.r = c.g = c.b = maxValue; output.diffuse = c; return output; } 实现这个功能后,对PS有了一点感觉了,对个像素的控制真是直接,灵活啊
1回应 2012-09-14 11:58:05 -
坑爹的QQ2012Beta3 截图功能显示的像素数竟然不正确, 让我折腾两个晚上. 本来我设置视口为640*480,可是用QQ截图测出来总是差几个像素,搞得我以为那里搞错了,找来找去找不到,后来用另外一款截图软件测量,竟然是对的,这才确定是QQ截图工具的问题,于是发到了他们的问题反馈,不过看那N多页问题,估计我的问题也只会石沉大海吧 不过通过这个还弄明白了一些问题, 就是你设置视口大小和最终显示的大小的关系,他们并不一致的, 而是跟后...
2012-09-14 11:29:06
坑爹的QQ2012Beta3 截图功能显示的像素数竟然不正确, 让我折腾两个晚上. 本来我设置视口为640*480,可是用QQ截图测出来总是差几个像素,搞得我以为那里搞错了,找来找去找不到,后来用另外一款截图软件测量,竟然是对的,这才确定是QQ截图工具的问题,于是发到了他们的问题反馈,不过看那N多页问题,估计我的问题也只会石沉大海吧 不过通过这个还弄明白了一些问题, 就是你设置视口大小和最终显示的大小的关系,他们并不一致的, 而是跟后台缓存区和窗口的显示区域比例有关, 其关系应该是 : 视口大小/最终显示大小 = 后台区域大小/窗口显示区域大小 另外窗口的显示区域的函数是GetWindowRect, 但这里有个比较迷惑的问题,就是微软的MSDN解释说这个函数得出的长宽是比实际的要多出一个像素的,即 RECT windowRect; ::GetWindowRect(hWnd,&windowRect); LONG realWidth = clientRect.right - 1 LONG realLength = clientRect.bottom - 1 而且我在以前的项目时也看过这样写的,但我在实际测试中的不减才是对的,不知掉是怎么回事呢 有大大帮我解释这个疑惑吗
回应 2012-09-14 11:29:06
这本书的其他版本 · · · · · · ( 全部7 )
-
Mercury Learning & Information (2012)8.5分 42人读过
-
人民邮电出版社 (2019)9.8分 27人读过
-
限时抢
-
Jones & Bartlett Learning (2003)8.8分 35人读过
-
Jones & Bartlett Publishers (2006)9.7分 20人读过
在哪儿借这本书 · · · · · ·
以下书单推荐 · · · · · · ( 全部 )
- 遊戲編程: 入門 (Milo)
- 計算機圖形: 入門/API類 (Milo)
- 购书记录 (|53/V>)
- 游戏设计与教育 (Himiko)
- 游戏开发 (神雕侠觅侣)
谁读这本书?
二手市场
订阅关于DirectX 9.0 3D游戏开发编程基础的评论:
feed: rss 2.0
1 有用 鸿志 2011-10-15 16:22:38
错误不少啊.....最起码的代码排版都有问题,看着不爽
0 有用 honk 2009-01-26 22:13:47
正在读着呢,听说不错。。。
0 有用 Spike 2010-04-09 00:07:41
重点阅读对象,入门好书~从它开始正式打开D3D的大门。。
0 有用 DreamAndDead 2019-01-22 17:55:11
清晰易懂,言简意赅。 对D3D的API有一个粗略的系统认知,后续还在反复翻看
0 有用 jinleileiking 2011-10-31 19:57:53
看了一点而已。。。
0 有用 fantic-xush 2022-01-14 14:13:20
这本书主要介绍的是Direct9的api,年代有点久远,作为兴趣和入门看看也挺好的,现在首选推荐还是Direct11/12的相关书籍。当然这主要还是在讲api,不太建议以入门为目的的新人看这个系列的书
0 有用 wht。 2020-04-18 19:59:27
有点老
0 有用 至强处理器 2019-03-06 14:41:13
只能说写的太好了,对我这种先上手游戏引擎的迷茫狗来说,读的时候就感觉茅塞顿开,读完以后融汇贯通,这种感觉太爽了
0 有用 爱听BWV的猫 2019-02-27 15:30:15
感觉中文翻译有点糟糕,原文没读过,算是浏览了一遍,现在这本书也过时了。图形学,英语和数学的关还是躲不开。
0 有用 DreamAndDead 2019-01-22 17:55:11
清晰易懂,言简意赅。 对D3D的API有一个粗略的系统认知,后续还在反复翻看