标题：OpenGL游戏编程
内容提要
本书讲解OpenGL的游戏开发中的实用技术。主要内容包括：游戏开发快速入门、OpenGL程序框架、OpenGL变换、OpenGL光照、材质和纹理、OpenGL字体、摄像漫游、构造开空和地形、模型载入、实时阴影、DirectInput的使用、DirectSound的使用、游戏中的物理模拟、粒子系统、构造游戏引擎、3DRPG游戏、Quake室内场景实例等。本书讲解清晰，言简意赅，提供大量原创实例。可帮助读者快速进入游戏开发领域。
编辑推荐
3D游戏是当前游戏的主流，对于初学者来说，其核心技术就是3D图形编程。长久以来。，OpenGL都是3D游戏开发领域的主流开发包之一，也是开发者追逐顶尖技术的利器。
与DirectX相比，OpenGL一语言简单易懂，前后版本的兼容性也比较好，对于希望进入游戏开发、3D图形处理、模拟仿真、虚拟现实等领域的初学者来说，学习OperlGL一是他们最好的起点。基于此，本书将在游戏开发的背景下，舍弃OperlGL中与游戏开发关联不大的琐碎知识细节，引导读者快速掌握游戏开发中所必须掌握的最重要、最实用的概念、原理和编程技巧，事半功倍地进入游戏开发领域。
本书特色：
·参阅了国内外大量最新的图形开发和游戏编程方面的资料，所讲解的内容都依据图形开发领域的成熟方法和技术。
·所有的例子都共用一个在实际项目中经过严格测试的方便、稳定、实用的程序框架，该框架提供两个版本：面向过程的传统Wirl32API风格和更方便实用的面向对象风格，读者只要具有C/C++和图形学基本知识就可以看懂。
·全书代码保持一种良好的编码风格，提供清晰的注释和规范的UML一设计。
·所有实例都力求实用、新颖、有趣，并取材于实际项目，具有极高的可复用价值，完全能在实际项目中“即插即用”。
·涵盖游戏开发、仿真系统、多媒体应用等主要图形应用领域。
·实例中深度剖析一些目前市面图书中所从未涉及的实用技术细节。
作者简介
徐明亮，郑州大学硕士研究生毕业，曾在大学生挑战杯科技竞赛中以“3DMMO网络游戏通用引擎”项目获奖。读研期间，研究方向为游戏引擎与游戏人工智能，先后参与了游戏A吲擎、山盟网络休闲游戏平台、3D虚拟酒吧、专业围棋网络对弈平台等项目的研发工作，并在相关会议和期刊上发表多篇有关游戏引擎的论文。
目录
序
前言
作者简介
第1章　游戏开发快速入门
1.1　游戏软件开发概述
1.1.1　游戏软件开发流程
1.1.2　游戏软件的构成
1.1.3　游戏软件的运行原理
1.2　OpenGL与DirectX简介
1.2.1　OpenGL基础知识
1.2.2　DirectX基础知识
1.3　3D图形学快速入门
1.3.1　点和向量
1.3.2　坐标系与矩阵
1.3.3　3D图形处理流程
1.3.4　坐标变换
第2章　OpenGL.程序框架
2.1　窗口渲染环境
2.1.1　GDI设备环境
2.1.2　OpenGL渲染环境
2.2　创建Win32SDK风格的窗口
2.3　面向对象风格的窗口框架
2.3.1　窗口类GLWindow的设计及实现
2.3.2　键盘类Keys的设计与实现
2.3.3　应用程序类GIApplication的设计与实现
2.3.4　一个简单的实例
第3章　OpenGL变换　3.1　OpenGL的数据类型　3.2　函数命名的语法　3.3　OpenGL是种状态机　3.4　OpenGL变换　3.4.1　视点变换　3.4.2　模型变换　3.4.3　投影变换　3.4.4　视口变换　3.4.5　裁剪变换　3.4.6　矩阵堆栈　3.5　OpenGL变换实例第4章　OpenGL光照、材质和纹理　4.1　真实感图形基本概念　4.2　OpenGL光照模型　4.2.1　法线向量　4.2.2　创建光源　4.2.3　选择光照模型　4.2.4　光照实例　4.3　材质　4.3.1　材质RGB值与光源RGB值的关系　4.3.2　材质的定义　4.3.3　颜色材质模式　4.3.4　材质实例　4.4　纹理映射　4.4.1　纹理资源的载入　4.4.2　OpenGL纹理映射　4.4.3　OpenGL多重纹理第5章　OpenGL字体　5.1　位图字体　5.1.1　位图字体类　5.1.2　具体实现　5.1.3　实例　5.2　显示中文　5.2.1　字体类　5.2.2　具体实现　5.2.3　实例第6章　摄像漫游　6.1　漫游原理　6.2　准备工作　6.3　摄像机类　6.4　摄像漫游实例第7章　构造天空和地形　7.1　天空构造　7.1.1　天空盒原理　7.1.2　天空类实现　7.2　地形　7.2.1　地形构造原理　7.2.2　地形类实现　7.3　实例第8章　模型载入　8.1　3DS文件载入　8.1.1　3DS文件简介　8.1.2　准备工作　8.1.3　载入类定义　8.1.4　3DS文件载入实例　8.2　MD2文件载入　8.2.1　MD2文件简介　8.2.2　准备工作　8.2.3　MD2文件载入类　8.2.4　MD2文件载入实例第9章　实时阴影　9.1　简介　9.2　实时阴影　9.2.1　平面投射　9.2.2　阴影体　9.3　平面投射实例　9.4　阴影体实例第10章　Directlnput的使用　10.1　Directlnput简介　10.2　Directlnput的使用　10.2.1　安装和配置DirectX9.0　10.2.2　创建Directlnput接口对象　10.2.3　创建设备对象　10.2.4　设置设备的数据格式　10.2.5　设置设备的协作层次　10.2.6　设置设备的属性　10.2.7　设备的捕获　10.2.8　设备输入的获取　10.2.9　关闭　10.3　建立输入系统　10.3.1　键盘类CKeyboard　10.3.2　鼠标类CMouse　10.3.3　游戏杆类CJoystick　10.3.4　输入系统类CInputSystem　10.4　DirectSound应用实例　10.4.1　键盘实例　10.4.2　鼠标实例第11章　DirectSound的使用　11.1　声音的基础知识　11.2　DirectSound介绍　11.3　DirectSound的使用　11.3.1　创建DirectSound对象　11.3.2　设置设备的协作级别　11.3.3　创建主缓冲区　11.3.4　创建辅助缓冲区　11.3.5　加载声音数据　11.3.6　声音的播放与控制　11.4　3D音效　11.4.1　3D空间与缓冲区　11.4.2　最大最小距离　11.4.3　处理模式　11.4.4　声音圆锥　11.4.5　声源的创建　11.4.6　听者对象的创建　11.5　封装音频处理模块　11.6　音频实例第12章　游戏中的物理模拟　12.1　物理学基础知识　12.1.1　基本概念　12.1.2　牛顿运动定律　12.1.3　冲量、动量　12.2　物理规律的模拟　12.2.1　匀速运动模拟　12.2.2　平抛运动模拟　12.2.3　摩擦力模拟　12.3　碰撞检测　12.3.1　碰撞检测概述　12.3.2　碰撞检测　12.3.3　碰撞检测实例第13章　粒子系统　13.1　粒子系统简介　13.1.1　概述　13.1.2　分类　13.1.3　粒子系统的生命周期　13.2　粒子系统设计　13.2.1　形式描述　13.2.2　数据结构　13.3　粒子系统的实现　13.4　粒子系统实例l——雪花　13.5　粒子系统实例2——喷泉第14章　构造游戏引擎　14.1　游戏引擎简介　14.2　游戏引擎的体系结构　14.3　基础公用模块　14.3.1　基础结构和操作　14.3.2　数学运算模块　14.3.3　计时器CT'imer类　14.3.4　字体类　14.3.5　摄像机类　14.3.6　INI文件读取类　14.4　窗口引擎模块　14.5　输入系统模块　14.5.1　输入法IME编程　14.5.2　输入系统类　14.6　场景管理模块　14.6.1　对象管理模块　14.6.2　游戏场景模块　14.6.3　场景管理模块　14.7　资源管理模块　14.8　GuI界面设计模块　14.8.1　GUI模块构架　14.8.2　按钮类CButton　14.8.3　复选框类CCheckBox　14.8.4　文本编辑类Edit　14.8.5　对话框类Dialog　14.8.6　滚动条类CScrollBar’　14.8.7　列表框类L，istView　14.8.8　进度条类CProgressBar　14.8.9　小地图类MapView　14.9　消息系统模块　14.10　音频系统模块　14.11　粒子特效模块第15章　3DRPG游戏　15.1　游戏简介　15.2　角色设计　15.3　加入怪物　15.4　游戏场景　15.5　光标动画　15.6　游戏界面　15.7　运行界面第16章　Quake室内场景实例　16.1　BSP技术　16.1.1　为什么要使用：BSP　16.1.2　BSP原理　16.1.3　渲染BSP　16.2　隐藏面剔除　16.3　Quake室内场景绘制　16.3.1　Quake3BSP文件格式　16.3.2　Quake3BSP文件的载入　16.3.3　运行结果第17章　指环王动画特效　17.1　实例介绍　17.2　关键技术　17.2.1　ASE模型读取　17.2.2　火焰的绘制　17.2.3　场景的绘制