预备知识 1
0.1 什么是数字游戏 2
0.2 常见的图形编程接口 3
0.2.1 什么是图形编程接口 3
0.2 2 DirectX 3
0.2.3 OpenGL 4
0.3 游戏引擎 5
0.3.1 什么是游戏引擎 5
0.3.2 主流游戏引擎 6
第1章 OpenGL简介 9
1.1 什么是OpenGL 10
1.1.1 OpenGL的发展史 10
1.1.2 OpenGL的基本特点 12
1.1.3 OpenGL的体系结构 13
1.1.4 OpenGL的渲染管线 14
1.1.5 OpenGL的状态机特性 15
1.1.6 一段简单的OpenGL代码 15
1.2 相关的函数库 17
1.2.1 OpenGL核心库 18
1.2.2 OpenGL实用库 19
1.2.3 OpenGL辅助库 19
1.2.4 OpenGL工具库 20
1.2.5 Windows专用库 21
1.3 基本图形功能 21
1.4 OpenGL的未来与展望 22
第2章 绘制几何物体 25
2.1 绘图前的准备工作 26
2.1.1 清除窗口 26
2.1.2 指定颜色 28
2.1.3 完成绘图 29
2.2 基本几何图元的描述 30
2.2.1 什么是点、直线和多边形 30
2.2.2 OpenGL几何图元 32
2.3 几何图元的绘制 33
2.3.1 使用gIBegin()和gIEnd() 33
2.3.2 点的绘制 36
2.3.3 直线的绘制 37
2.3.4 多边形的绘制 38
第3章 视图变换 41
3.1 图形变换的数学基础 42
3.1.1 图形变换的基本原理 42
3.1.2 平移变换 44
3.1.3 缩放变换 44
3.1.4 旋转变换 45
3.2 OpenGL中的坐标变换 46
3.2.1 从一个简单的例子说起 46
3.2.2 视觉坐标 48
3.2.3 视点变换 49
3.2.4 模型变换 49
3.2.5 投影变换 49
3.2.6 视口变换 50
3.3 OpenGL中的模型变换 50
3.3.1 模型观察矩阵 51
3.3.2 模型观察矩阵的具体变换 52
3.3.3 gluLookAt()的使用 52
3.4 OpenGL的投影变换 53
3.5 OpenGL的视口变换 54
3.5.1 定义视口 54
3.5.2 变换深度坐标 55
3.6 裁剪平面 55
第4章 颜色 61
4.1 计算机中的颜色 62
4.1.1 三基色原理 62
4.1.2 RGB色立体 63
4.2 RGBA模式与颜色索引模式 65
4.2.1 什么是RGBA模式 65
4.2.2 什么是颜色索引模式 66
4.2.3 两者之间的选择和交换 69
4.3 颜色使用实例 69
第5章 光照 73
5.1 真实世界与OpenGL光照 74
5.1.1 什么是环境光、散射光、镜面光和发射光 74
5.1.2 材质的颜色 75
5.1.3 光与材质的RGB值 75
5.2 创建光源 76
5.2.1 颜色 77
5.2.2 定位和衰减 77
5.2.3 聚光灯 78
5.2.4 多光源 79
5.2.5 光源位置和方向的控制 80
5.3 光照模型的选择 84
5.3.1 全局环境光 84
5.3.2 局部和无穷远视点 84
5.3.3 双面光照 85
5.3.4 激活光照 85
5.4 定义材质属性 86
5.4.1 漫反射和环境反射 86
5.4.2 镜面反射 87
5.4.3 发射光颜色 87
5.4.4 改变材质属性 88
第6章 混合模式,抗锯齿和雾 97
6.1 混合模式 98
6.1.1 单独的混合功能函数 99
6.1.2 混合方程式 100
6.1.3 常量混合色 100
6.1.4 混合的应用 101
6.2 抗锯齿 105
6 2.1 点和直线的抗锯齿 107
6.2.2 多边形的抗锯齿 110
6.3 雾 113
6.3.1 OpenGL中的烟雾 113
6.3.2 烟雾方程与坐标 114
6.3.3 烟雾的使用 115
第7章 位图和图像 121
7.1 位图 122
7.1.1 OpenGL的位图 122
7.1.2 光栅位置 123
7.1.3 位图的显示 123
7.1.4 OpenGL位图的应用实例 123
7 2 图像 129
7.2.1 读写图像数据 129
7.2.2 复制屏幕数据 132
7.2.3 图像的放大,缩小和翻转操作 132
7.2.4 OpenGL图像的应用实例 132
第8章 纹理映射 139
8.1 纹理映射概述及基本步骤 140
8.2 纹理坐标 145
8.2.1 纹理坐标的指定 145
8.2.2 重复和截取纹理 146
8 2.3 自动生成纹理坐标 146
8.3 纹理控制 150
8.3.1 纹理贴图方式 150
8.3.2 纹理精细度等级 151
8.4 纹理映射的使用 151
8.4.1 纹理对象 151
8 4.2 指定纹理 153
8.4.3 纹理过滤 154
8.5 纹理地形 154
第9章 OpenGL在Android移动平台上的应用 161
9.1 OpenGL与OpenGL ES的区别 162
9.2 在Android中搭建OpenGL开发框架 163
9.3 OpenGL在Android中的应用实例 165
第10章 小试牛刀 179
10.1 Windows编程简介 180
10.1.1 事件和消息 180
10.1.2 窗口 181
10.1.3 句柄 182
10.2 游戏策划 183
10.2.1 游戏策划 183
10.2.2 搭建编程环境 186
10.3 创建基本游戏框架 193
10.4 准备游戏资源 195
10.5 游戏的显示部分 198
10.6 丰富游戏逻辑 199
10.7 进一步完善游戏 208
参考文献 213