《Direct 3D立即模式技术参考手册》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:杨峰,周颖恒等编
  • 出 版 社:成都:西南交通大学出版社
  • 出版年份:1999
  • ISBN:7810572954
  • 页数:262 页
图书介绍:

第一部分 Direct 3D立即模式概述 3

第一章 关于Direct 3D立即模式 3

第二章 为什么要用Direct 3D立即模式 4

第三章 Direct 3D立即模式入门 5

3.1 三维坐标系统 5

3.1.1 Direct 3D三维坐标系统 5

3.1.2 U-和V-坐标系统 6

3.2 三维图形变换 6

3.2.1 平移 7

3.2.2 旋转 7

3.2.3 缩放 8

3.3 多边形 8

3.3.1 面和顶点法向量 8

3.3.2 阴影模式 9

3.3.3 三角形插值 11

3.4 三角条和扇形 11

3.5 三角形光栅化规则 12

第四章 Direct 3D立即模式的结构 16

4.1 结构概述 16

4.2 立即模式对象类型 16

4.2.1 DirectDraw对象 17

4.2.2 DirectDrawSurface对象 17

4.2.3 Direct3DDevice对象 17

4.2.4 Direct3DMaterial对象 17

4.2.5 Direct3DViewport对象 17

4.2.6 Direct3DLight对象 18

4.2.7 Direct3D执行缓冲对象 18

4.3 立即模式COM界面 18

4.4 画图元方法和执行缓冲 18

第五章 Direct 3D立即模式的主要内容 19

5.1 DirectX 6中立即模式的改变 19

5.1.1 与DirectX 3的兼容性 19

5.1.2 将DirectX 3的程序移植到DirectX 6上 20

5.2 画图元(DrawPrimitive)方法 20

5.2.1 画图元的API扩展 20

5.2.2 画图元功能结构 20

5.2.3 同时运用画图元和执行缓冲 21

5.2.4 一个简单的画图元例子 22

5.3 全局统一识别码(GUID) 23

5.4 IDirect3D2界面 23

5.5 设备 23

5.6 视口与转换 24

5.6.1 变换管道 25

5.6.2 设置变换 25

5.6.3 创建和删除视口 26

5.6.4 矩阵 27

5.6.5 世界变换 28

5.6.6 视口变换 29

5.6.7 投影变换 31

5.7 纹理 32

5.7.1 表面、设备和句柄 32

5.7.2 纹理弯曲 33

5.7.3 纹理滤波和融合 34

5.7.4 递减纹理(Mipmaps) 34

5.7.5 透明和半透明 36

5.8 灯光 36

5.9 材质 39

5.10 颜色与雾化 40

5.10.1 彩色光照 40

5.10.2 调色板项 40

5.10.3 雾 40

5.11 反走样 41

5.11.1 边缘反走样 41

5.11.2 普遍反走样 42

5.12 Direct 3D与DirectDraw的结合 42

5.12.1 对象与接口 42

5.12.2 纹理贴图 43

5.12.3 Z-缓冲 44

5.12.4 RGBZ支持 44

5.13 执行缓冲 45

5.14 运用执行缓冲 45

5.14.1 执行缓冲的结构 46

5.14.2 执行缓冲的内容 47

5.14.3 执行缓冲的创建 49

5.14.4 执行缓冲锁 49

5.14.5 填充执行缓冲 49

5.14.6 执行缓冲的解锁 51

5.14.7 执行缓冲的执行 51

5.15 状态和状态废弃 51

5.16 浮点精度 52

5.17 性能优化 52

5.17.1 PC硬件加速 53

5.17.2 数据库和挑选 53

5.17.3 批处理方式画图元 53

5.17.4 光照提示 54

5.17.5 纹理大小 54

5.17.6 软件对硬件 55

5.17.7 三角形标志 56

5.17.8 执行时的剪取测试 56

5.17.9 整体性能提示 58

5.18 疑难解答 58

5.18.1 设备创建 58

5.18.2 没有可见物体 58

5.18.3 排错(Debugging) 59

5.18.4 Borland浮点初始化 59

5.18.5 杂项 60

第六章 Direct 3D执行缓冲教学 61

6.1 定义、原型和全局变量 61

6.1.1 头文件与包含 62

6.1.2 Imsample.c 中的常量 62

6.1.3 Imsample.c中的宏 63

6.1.4 全局变量 64

6.1.5 函数原型 66

6.2 枚举Direct 3D设备 68

6.2.1 枚举回调函数 68

6.2.2 枚举函数 70

6.3 创建设备和接口 71

6.3.1 创建主DirectDraw表面和剪贴板对象 71

6.3.2 创建Direct 3D对象 74

6.3.3 创建Direct 3D设备 75

6.4 创建场景 77

6.5 填充执行缓冲 82

6.6 场景动画 86

6.7 渲染 86

6.7.1 渲染场景 87

6.7.2 渲染单帧 88

6.8 矩阵的工作 89

6.8.1 设置透视变换 89

6.8.2 设置旋转变换 90

6.9 恢复和重画 91

6.9.1 恢复Direct 3D设备 91

6.9.2 恢复主表面 92

6.9.3 恢复所有的表面 92

6.9.4 在窗口移动后重画 93

6.9.5 在窗口改变大小后重画 93

6.9.6 重画客户区 95

6.9.7 更新视角 96

6.10 释放对象 97

6.10.1 释放Direct 3D对象 97

6.10.2 释放Direct 3D设备 98

6.10.3 释放主表面 98

6.10.4 释放场景对象 99

6.11 错误检查 100

6.11.1 检查击活的状态 100

6.11.2 报告标准错误 101

6.11.3 报告致命错误 102

6.11.4 显示报告字符串 102

6.12 转换位深度 103

6.12.1 将位深度转换为标志位 103

6.12.2 将标志位转换为位深度 104

6.13 主窗口程序 105

6.14 WinMain函数 107

第二部分 Direct 3D立即模式参考 113

第一章 接口函数 113

1.1 IDirect3D2接口 113

1.1.1 IDirect3D2::CreateDevice 114

1.1.2 IDirect3D2::CreateLight 114

1.1.3 IDirect3D2::CreateMaterial 115

1.1.4 IDirect3D2::CreateViewport 115

1.1.5 IDirect3D2::EnumDevices 116

1.1.6 IDirect3D2::FinDDevice 117

1.1.7 IDirect3D::Initialize 117

1.2 IDirect3Ddevice接口 117

1.2.1 IDirect3DDevice::CreateExecuteBuffer 118

1.2.2 IDirect3DDevice::CreateMatrix 119

1.2.3 IDirect3DDevice::DeleteMatrix 120

1.2.4 IDirect3DDevice::Execute 120

1.2.5 IDirect3DDevice::GetMatrix 121

1.2.6 IDirect3DDevice::GetPickRecords 121

1.2.7 IDirect3DDevice::Initialize 122

1.2.8 IDirect3DDevice::Pick 122

1.2.9 IDirect3DDevice::SetMatrix 123

1.3 IDirect3DDevice2接口 124

1.3.1 IDirect3Ddevice2::AddViewport 125

1.3.2 IDirect3DDevice2::Begin 126

1.3.3 IDirect3DDevice2::BeginIndexed 127

1.3.4 IDirect3DDevice2::BeginScene 128

1.3.5 IDirect3DDevice2::DeleteViewport 129

1.3.6 IDirect3DDevice2::DrawIndexedPrimitive 129

1.3.7 IDirect3DDevice2::DrawPrimitive 131

1.3.8 IDirect3DDevice2::End 133

1.3.9 IDirect3DDevice2::EndScene 133

1.3.10 IDirect3DDevice2::EnumTextureFormats 134

1.3.11 IDirect3DDevice2::GetCaps 134

1.3.12 IDirect3DDevice2::GetClipStatus 135

1.3.13 IDirect3DDevice2::GetCurrentViewport 135

1.3.14 IDirect3DDevice2::GetDirect3D 136

1.3.15 IDirect3DDevice2::GetLightState 136

1.3.16 IDirect3DDevice2::GetRenderState 137

1.3.17 IDirect3DDevice2::GetRenderTarget 138

1.3.18 IDirect3DDevice2::GetStats 138

1.3.19 IDirect3DDevice2::GetTransform 139

1.3.20 IDirect3DDevice2::Index 139

1.3.21 IDirect3DDevice2::MultiplyTransform 140

1.3.22 IDirect3DDevice2::NextViewport 141

1.3.23 IDirect3DDevice2::SetClipStatus 142

1.3.24 IDirect3DDevice2::SetCurrentViewport 142

1.3.25 IDirect3DDevice2::SetLightState 143

1.3.26 IDirect3DDevice2::SetRenderState 143

1.3.27 IDirect3DDevice2::SetRenderTarget 144

1.3.28 IDirect3DDevice2::SetTransform 145

1.3.29 IDirect3DDevice2::SwapTextureHandles 145

1.3.30 IDirect3DDevice2::Vertex 146

1.4 IDirect3DexecuteBuffer接口 146

1.4.1 IDirect3DExecuteBuffer:GetExecuteData 147

1.4.2 IDirect3DExecuteBuffer::Initialize 148

1.4.3 IDirect3DExecuteBuffer::Lock 148

1.4.4 IDirect3DExecuteBuffer::Optimize 149

1.4.5 IDirect3DExecuteBuffer::SetExecuteData 149

1.4.6 IDirect3DExecuteBuffer::UnLock 149

1.4.7 IDirect3DExecuteBuffer::Validate 150

1.5 IDirect3DLight接口 150

1.5.1 IDirect3DLight::GetLight 151

1.5.2 IDirect3DLight::Initialize 151

1.5.3 IDirect3DLight::SetLight 152

1.6 IDirect3DMaterials2接口 152

1.6.1 IDirect3DMaterial2::GetHandle 153

1.6.2 IDirect3DMaterial2::GetMaterial 153

1.6.3 IDirect3DMaterial::Initialize 154

1.6.4 IDirect3DMaterial::Reserve 154

1.6.5 IDirect3DMaterial2::SetMaterial 154

1.6.6 IDirect3DMaterial::Unreserve 155

1.7 IDirect3DTexture2接口 155

1.7.1 IDirect3DTexture2::GetHandle 155

1.7.2 IDirect3DTexture::Initialize 156

1.7.3 IDirect3DTexture2::Load 156

1.7.4 IDirect3DTexture2::PaletteChanged 157

1.7.5 IDirect3DTexture::UnLoad 157

1.8 IDirect3DViewport2接口 157

1.8.1 IDirect3DViewport2::AddLight 158

1.8.2 IDirect3DViewport2::Clear 159

1.8.3 IDirect3DViewport2::DeleteLight 159

1.8.4 IDirect3DViewport2::GetBackground 160

1.8.5 IDirect3DViewport2::GetBackgroundDepth 161

1.8.6 IDirect3DViewport2::GetViewport 161

1.8.7 IDirect3DViewport2::GetViewport2 162

1.8.8 IDirect3DViewport2::Initialize 162

1.8.9 IDirect3DViewport2::LightElements 162

1.8.10 IDirect3DViewport2::NextLight 163

1.8.11 IDirect3DViewport2::SetBackground 163

1.8.12 IDirect3DViewport2::SetBackgroundDepth 164

1.8.13 IDirect3DViewport2::SetViewport 165

1.8.14 IDirect3DViewport2::SetViewport2 165

1.8.15 IDirect3DViewport2::TransformVertices 166

第二章 D3D重载符 168

2.1 D3D重载结构 168

2.1.1 D3DLVERTEX结构 169

2.1.2 D3DTLVERTEX结构 169

2.1.3 D3DVECTOR结构 169

2.1.4 D3DVERTEX结构 170

2.2 D3D重载操作符 170

2.2.1 传送授权操作符(D3D重载) 170

2.2.2 加运算重载符 171

2.2.3 赋值运算符 171

2.2.4 位等运算符 172

2.2.5 D3DMATRIX(D3D模型重载) 172

2.2.6 除运算重载符 173

2.2.7 乘运算重载符 174

2.2.8 减运算符重载符 174

2.2.9 增减量运算符 174

2.2.10 向量优先操作符 175

2.3 D3D重载辅助函数 175

2.3.1 矢量叉乘函数 176

2.3.2 点乘函数(标量乘) 176

2.3.3 取模函数(Magnitude) 177

2.3.4 求最大函数(Max) 177

2.3.5 最大化函数(Maximize) 178

2.3.6 求最小值函数(Min) 178

2.3.7 求最小化函数(Minimize) 179

2.3.8 单位化函数(Normalize) 180

2.3.9 模平方函数(SquareMagnitude) 180

第三章 宏 181

3.1 D3DDivide宏(D3D除) 181

3.2 D3DMultiply宏 182

3.3 D3DRGB宏 182

3.4 D3DRGBA宏 182

3.5 D3DSTATE_OVERRIDE宏 183

3.6 D3DVAL宏 183

3.7 D3DVALD宏 184

3.8 RGB_GETBLUE宏 184

3.9 RGB_GETGREEN宏 184

3.10 RGB_GETRED宏 185

3.11 RGB_MAKE宏 185

3.12 RGB_TORGBA宏 185

3.13 RGBA_GETALPHA宏 186

3.14 RGBA_GETBLUE宏 186

3.15 RGBA_GETGREEN宏 186

3.16 RGBA_GETRED宏 187

3.17 RGBA_MAKE宏 187

3.18 RGBA_SETALPHA宏 187

3.19 RGBA_TORGB宏 188

第四章 回调函数 189

4.1 D3DENUMDEVICESCALLBACK 189

4.2 D3DENUMTEXTUREFORMATSCA LLBACK 190

4.3 D3DVALIDATECALLBACK 190

第五章 结构 192

5.1 D3DBRANCH结构 193

5.2 D3DCLIPSTATUS结构 193

5.3 D3DCOLORVALUE结构 194

5.4 D3DDEVICEDESC结构 195

5.5 D3DEXECUTEBUFFERDESC结构 197

5.6 D3DEXECUTEDATA结构 198

5.7 D3DFINDDEVICERESULT结构 199

5.8 D3DFINDDEVICESEARCH结构 200

5.9 D3DHVERTEX结构 202

5.10 D3DINSTRUCTION结构 202

5.11 D3DLIGHT2结构 203

5.12 D3DLIGHTDATA结构 205

5.13 D3DLIGHTINGCAPS结构 205

5.14 D3DLIGHTINGELEMENT结构 206

5.15 D3DLINE结构 207

5.16 D3DLINEPATTERN结构 207

5.17 D3DLVERTEX结构 208

5.18 D3DMATERIAL结构 209

5.19 D3DMATRIX结构 210

5.20 D3DMATRIXLOAD结构 211

5.21 D3DMATRIXMULTIPLY结构 211

5.22 D3DPICKRECORD结构 211

5.23 D3DPOINT结构 212

5.24 D3DPRIMCAPS结构 213

5.25 D3DPROCESSVERTICES结构 221

5.26 D3DRECT结构 222

5.27 D3DSPAN结构 222

5.28 D3DSTATE结构 223

5.29 D3DSTATS结构 224

5.30 D3DSTATUS结构 224

5.31 D3DTEXTURELOAD结构 226

5.32 D3DTLVERTEX结构 226

5.33 D3DTRANSFORMCAPS结构 227

5.34 D3DTRANSFORMDATA结构 228

5.35 D3DTRIANGLE结构 230

5.36 D3DVECTOR结构 232

5.37 D3DVERTEX结构 232

5.38 D3DVIEWPORT结构 234

5.39 D3DVIEWPORT2结构 234

第六章 枚举类型 237

6.1 D3DANTIALIASMODE 237

6.2 D3DBLEND 238

6.3 D3DCMPFUNC 239

6.4 D3DCOLORMODEL 240

6.5 D3DCULL 241

6.6 D3DFILLMODE 241

6.7 D3DFOGMODE 242

6.8 D3DLIGHTSTATETYPE 243

6.9 D3DLIGHTTYPE 244

6.10 D3DOPCODE 244

6.11 D3DPRIMITIVETYPE 246

6.12 D3DRENDERSTATETYPE 247

6.13 D3DSHADEMODE 254

6.14 D3DTEXTUREADDRESS 255

6.15 D3DTEXTUREBLEND 255

6.16 D3DTEXTUREFILTER 257

6.17 D3DTRANSFORMSTATETYPE 258

6.18 D3DVERTEXTYPE 259

第七章 其它类型 260

7.1 D3DCOLOR 260

7.2 D3DVALUE 260

第八章 返回值 261