第1章 绪论 1
1.1 媒体概述 1
1.1.1 媒体的定义 1
1.1.2 常见媒体 2
1.2 多媒体与多媒体技术 4
1.2.1 多媒体概念 4
1.2.2 多媒体技术 4
1.2.3 多媒体技术的发展 5
1.3 多媒体技术研究内容 6
第2章 Windows图形基础 8
2.1 图形概念 8
2.1.1 矢量图 8
2.1.2 位图 9
2.2 图形设备接口 10
2.2.1 设备描述表 11
2.2.2 绘图工具 12
2.3 坐标与映射 13
2.3.1 逻辑坐标与设备坐标 13
2.3.2 坐标映射 14
2.4 MFC对GDI的封装 15
2.4.1 CDC类 15
2.4.2 CGdiObject类 17
2.5 三基色与调色板 18
2.6 文本处理 20
2.6.1 选择文本字体 20
2.6.2 设置文本属性 22
2.6.3 文本输出 23
2.6.4 控制字体显示 23
2.7 画笔与画刷 24
2.7.1 画笔 24
2.7.2 画刷 26
2.8 基本图形的绘制 27
2.8.1 绘图函数 27
2.8.2 绘图模式 31
2.8.3 一个绘制橡皮筋直线的例子 31
思考题 33
第3章 基于OpenGL的图形绘制 34
3.1 OpenGL概述 34
3.1.1 OpenGL功能 34
3.1.2 OpenGL特点 35
3.1.3 OpenGL工作机理 36
3.1.4 OpenGL基本语法 37
3.2 OpenGL函数库 38
3.2.1 基本库 38
3.2.2 实用库 42
3.2.3 辅助库 43
3.3 OpenGL建模 46
3.3.1 基本图元 46
3.3.2 绘制基本图元 46
3.4 图形变换 50
3.4.1 相机模型 50
3.4.2 矩阵操作 51
3.4.3 视点变换 52
3.4.4 模型变换 53
3.4.5 投影变换 53
3.4.6 视口变换 56
3.5 光照与材质 56
3.5.1 光照模型 56
3.5.2 明暗处理 58
3.5.3 材质 59
3.6 纹理映射 61
3.6.1 使用纹理对象 61
3.6.2 指定纹理 62
3.6.3 纹理滤波 63
3.6.4 设置映射方式 63
3.6.5 生成纹理坐标 63
3.7 曲线和曲面 64
3.7.1 绘制曲线 64
3.7.2 构造曲面 66
3.7.3 图元逼近法绘制3D物体 67
3.8 颜色管理 67
3.8.1 RGBA模式 68
3.8.2 颜色表模式 68
3.9 基于GLUT的OpenGL程序设计 68
3.9.1 GLUT函数库 69
3.9.2 使用GLUT绘制三角形 72
3.10 基于Win32的OpenGL程序设计 74
3.10.1 创建程序框架 74
3.10.2 头文件和全局变量 76
3.10.3 定义WinMain()函数 76
3.10.4 定义CreateGLWindow()函数 77
3.10.5 定义WndProc()函数 79
3.10.6 定义KillGLWindow()函数 80
3.10.7 定义InitGL()函数 81
3.10.8 定义ReSizeGLScene()函数 82
3.10.9 定义DrawGLScene()函数 82
3.11 基于MFC的OpenGL程序设计 83
3.11.1 构造OpenGL环境 83
3.11.2 创建OpenGL程序的基本步骤 85
思考题 88
第4章 基于Direct3D的图形绘制 89
4.1 DirectX概述 89
4.2 DirectX SDK安装和配置 90
4.2.1 安装DirectX SDK 90
4.2.2 基于Visual C++ 6.0环境配置DirectX 93
4.3 Direct3D设备 94
4.3.1 设备类型 94
4.3.2 创建设备 95
4.3.3 选择设备 97
4.4 基本图元 98
4.4.1 点 98
4.4.2 线 98
4.4.3 三角形 99
4.5 Direct3D应用程序结构 101
4.5.1 创建窗口 102
4.5.2 初始化Direct3D 103
4.5.3 消息循环处理 104
4.5.4 图形绘制 105
4.6 基于Win32创建Direct3D程序 107
4.6.1 创建MyD3D_1项目 108
4.6.2 代码分析 110
4.7 基于MFC创建Direct3D程序 111
4.7.1 创建MyD3D_2项目 111
4.7.2 构建Direct3D程序框架 112
4.7.3 绘制三角形 114
4.7.4 绘制圆锥 117
思考题 121
第5章 3DMAX模型显示与控制 122
5.1 3DMAX概述 122
5.1.1 版本更替概况 122
5.1.2 基本工作流程 123
5.2 3DS文件结构 124
5.2.1 导出3DS文件格式 124
5.2.2 3DS文件块层次结构 124
5.2.3 对象块EDIT_OBJECT 127
5.3 3DS文件读取类CLoad3DS 131
5.3.1 定义数据结构信息 131
5.3.2 定义C3DSReader类 133
5.3.3 设计CTriList类 144
5.3.4 设计CTriObject类 146
5.4 基于MFC读取3DS文件 150
5.4.1 创建一个SDI工程 150
5.4.2 修改CMy3DSLoaderView类 150
5.5 控制3DS模型 154
5.5.1 增加数据成员 155
5.5.2 增加成员函数 155
5.5.3 添加鼠标事件响应函数 156
5.5.4 修改RenderScene()函数 157
思考题 158
第6章 图像处理基础 159
6.1 概述 159
6.1.1 图像处理 159
6.1.2 数字图像 160
6.1.3 数字图像处理 162
6.2 数字图像文件格式 163
6.2.1 常用图像格式 163
6.2.2 位图格式 164
6.2.3 BMP文件结构 166
6.3 位图显示 168
6.3.1 显示DDB位图 168
6.3.2 显示DIB位图 170
6.4 图像平滑 178
6.4.1 图像增强 178
6.4.2 图像平滑的基础知识 179
6.4.3 低通滤波器 181
6.4.4 软件设计 182
6.5 图像锐化 189
6.5.1 微分法 189
6.5.2 高通滤波器 190
6.5.3 软件设计 191
思考题 194
第7章 音频处理与语音合成 196
7.1 声音、语音与音频 196
7.1.1 声音 196
7.1.2 语音 196
7.1.3 音频 197
7.2 WAVE文件格式 198
7.2.1 RIFF格式 198
7.2.2 WAVE文件格式 199
7.3 音频文件的播放 200
7.3.1 使用简单的播放函数播放声音文件 200
7.3.2 将声音文件加入到程序资源中 202
7.4 媒体控制接口编程 204
7.4.1 媒体控制接口简介 204
7.4.2 设计简易音频播放器 208
7.5 语音合成 213
7.5.1 认识SAPI 214
7.5.2 语音合成的含义 215
7.5.3 设计简易语音合成系统 216
思考题 221
第8章 基于DirectShow实现视频播放 222
8.1 DirectShow简介 222
8.2 DirectShow系统结构 223
8.3 基于Visual C++ 6.0配置DirectShow 226
8.4 视频概述 228
8.5 CDXGraph类 230
8.5.1 基本步骤 230
8.5.2 设计CDXGraph类 230
8.6 设计简易视频播放器 244
8.6.1 创建工程MyDirectShow_1 244
8.6.2 修改MyDirectShow_1Dlg类 245
思考题 249
第9章 多媒体数据库编程 250
9.1 概述 250
9.1.1 数据管理方式的发展 250
9.1.2 数据库与数据库系统 252
9.1.3 数据库系统的体系结构 254
9.1.4 数据模型与数据模式 256
9.1.5 多媒体数据库的诞生 260
9.1.6 多媒体数据模型 261
9.1.7 多媒体数据库系统的体系结构 263
9.1.8 多媒体数据库的实现 264
9.2 创建数据库 266
9.2.1 创建空数据库 266
9.2.2 创建数据表 266
9.3 ODBC基础 268
9.3.1 OBDC简介 269
9.3.2 注册ODBC 270
9.3.3 封装ODBC 273
9.4 创建简易多媒体数据库应用程序 278
9.4.1 创建应用程序框架 278
9.4.2 CMyDB2Set类 279
9.4.3 视图设计 281
9.4.4 为CMyDB2View类声明数据成员 286
9.5 创建事件响应函数 287
9.5.1 初始化 287
9.5.2 编写“添加”按钮响应函数 289
9.5.3 编写“浏览照片”响应函数 290
9.5.4 编写“修改”按钮响应函数 291
9.5.5 编写“确认”、“撤销”按钮响应函数 291
9.5.6 编写“删除”按钮响应函数 292
9.5.7 编写导航按钮响应函数 292
思考题 294
附录 上机实验 295
实验一 实用图形绘制系统 295
实验二 基于OpenGL的3D图形绘制 296
实验三 3DMAX模型设计与VC调用 296
实验四 简易音频播放器设计 297
实验五 数字图像处理系统 298
实验六 基于DirectX的视频管理系统 299
参考文献 300