游戏渲染基础教程.pdf
《游戏渲染基础教程.pdf》由会员分享,可在线阅读,更多相关《游戏渲染基础教程.pdf(162页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、北京源点索思教育科技有限公司 游戏渲染基础教程 1 游戏渲染基础教程游戏渲染基础教程(内部内部资料资料)游戏源教学体系 北京源点索思教育科技有限公司 游戏渲染基础教程 2 目录目录 游戏渲染基础教程.1 1 第一章 DirectX 与 Direct3D 的简介.7 1.1 计算机图形处理器.7 1.2 DirectX 与 OpenGL.8 1.2.1 OpenGL 简介.8 1.2.2 DirectX 介绍.8 1.3 DirectX 的发展.9 1.4 DirectX 开发包的组成.9 1.5 HAL 与 REF.10 1.5.1 硬件抽像层(Hardware Abstraction Lay
2、er,HAL).10 1.5.2 软件参考层 REF(Reference Layer).11 1.6 DirectX 与 COM 技术.11 1.6.1 COM 的优点.11 1.6.2 COM 的创建.11 1.7 DirectX 环境配置.12 1.8 DirectX 帮助文档.14 1.9 浏览 DirectX 示例程序.14 2 第二章 Direct3D 程序设计基础.16 2.1 初始化 D3D 程序.16 2.2 获取显示卡设备的内容.19 2.3 像素(Pixel)、分辨率(Resolution)和填充率(Fillrate).20 2.4 表面(Surface).20 2.5 缓
3、冲区.20 2.6 页翻动.21 2.7 交换链.21 2.8 选择设备.22 2.9 检测硬件支持.23 2.10 Direct3D 程序调试.23 3 第三章 顶点渲染.26 3.1 灵活顶点格式.26 3.2 顶点缓冲区(Vertex Buffer).27 3.2.1 创建顶点缓冲函数.28 3.2.2 顶点存储位置转换.29 3.3 图形显示.29 3.4 渲染顶点例题分析.30 3.5 基本图元.32 3.6 Direct3D 中的颜色表示.35 3.7 资源.36 3.7.1 资源属性.36 3.7.2 锁定资源.37 3.7.3 资源间的关系.37 3.8 Direct3D 中的
4、资源内存管理.38 北京源点索思教育科技有限公司 游戏渲染基础教程 3 3.8.1 显存.38 3.8.2 Direct3D 资源管理.38 3.8.3 Direct3D 资源管理优化.39 3.9 Direct3D 中的设备丢失.39 3.9.1 设备丢失的响应.40 3.9.2 设备丢失的处理.40 3.10 背面拣选.41 4 第四章 顶点坐标变换.42 4.1 Direct3D 坐标系.42 4.2 矩阵基础.42 4.2.1 矩阵的定义.42 4.2.2 方阵.43 4.2.3 单位矩阵.43 4.2.4 矩阵的数学计算.43 4.2.5 逆矩阵.45 4.2.6 转置矩阵.45 4
5、.3 D3D 中的空间.46 4.4 D3D 图形渲染管线.47 4.5 3D 顶点转换.49 4.5.1 世界变换.50 4.5.2 取景变换.50 4.5.3 投影变换.52 4.5.4 视口变换(Viewport Transform).53 4.6 视区和裁剪.54 4.6.1 视区矩形.54 4.6.2 视棱锥.55 4.6.3 裁剪体.56 4.6.4 视区缩放.56 4.6.5 清除视区.57 4.7 光栅化.57 4.8 三角形光栅化法则.58 4.8.1 三角形光栅化法则.58 4.8.2 点、线光栅、点精灵光栅化法则.60 5 第五章 矩阵的应用.61 5.1 用少量点画矩形
6、.61 5.2 二维图形的几何变换.61 5.2.1 二维图形的平移变换.62 5.2.2 二维图形的缩放变换.62 5.2.3 二维图形的旋转变换.63 5.3 矩阵的变换.64 5.3.1 三维变换.64 5.3.2 矩阵平移.64 5.3.3 矩阵缩放.65 5.3.4 矩阵旋转.65 北京源点索思教育科技有限公司 游戏渲染基础教程 4 5.3.5 矩阵串接.66 5.4 着色模式.66 5.4.1 着色模式类型.66 5.4.2 着色模式的比较.67 5.4.3 设置着色模式.68 5.5 轮廓和填充状态.68 5.6 图形反锯齿.69 6 第六章 索引缓冲与深度测试.71 6.1 索
7、引缓冲.71 6.2 使用索引缓冲进行绘制.72 6.3 深度缓存.74 6.3.1 查询深度缓存支持.75 6.3.2 创建深度缓存.76 6.3.3 启用深度缓存.76 6.3.4 取得深度缓存.77 6.3.5 清除深度缓存.77 6.3.6 改变深度缓存的写权限.77 6.3.7 改变深度缓存的比较函数.77 6.3.8 使用 Z 偏移.77 7 第七章 光照与材质.79 7.1 向量基础.79 7.1.1 向量的定义.79 7.1.2 向量的几何表示.79 7.1.3 向量的位移与位置.79 7.1.4 向量大小.80 7.1.5 单位向量.80 7.2 向量运算.81 7.2.1
8、标量与向量相乘.81 7.2.2 向量加法.81 7.2.3 向量的点乘.83 7.2.4 向量的叉乘.84 7.3 光照模型.86 7.3.1 环境光(Ambient).86 7.3.2 漫反射(Diffuse).86 7.3.3 镜面反射(Specular).87 7.3.4 物体自发光模型(emissive).88 7.3.5 光照混合效果.89 7.4 光源.89 7.4.1 平行光(Directional Light).89 7.4.2 点光源(Point Light).90 7.4.3 聚光灯(Spot Light).91 7.4.4 三种光照类型比较.91 7.5 材质.94 7
9、.6 光照程序分析.95 北京源点索思教育科技有限公司 游戏渲染基础教程 5 7.7 法线计算.97 8 第八章 纹理基础.100 8.1 基本概念.100 8.2 基本贴图例题分析.100 8.3 纹理坐标.101 8.3.1 将 Texel 映射到屏幕空间.101 8.3.2 纹理坐标和纹理层.103 8.3.3 直接把 Texel 映射到像素.104 8.3.4 纹理坐标的格式.105 8.4 寻址模式.106 8.4.1 设置寻址模式.106 8.4.2 设备限制.106 8.4.3 环绕纹理寻址模式.107 8.4.4 镜像纹理寻址模式.107 8.4.5 截取纹理寻址模式.108
10、8.4.6 边框颜色纹理寻址模式.108 8.5 纹理环绕.109 8.5.1 基本原理.109 8.5.2 使用纹理环绕.112 8.5.3 纹理环绕与纹理寻址的比较.112 8.6 纹理过滤.112 8.6.1 最近点取样.113 8.6.2 线性纹理过滤.114 8.6.3 各向异性纹理过滤.115 8.6.4 用 Mipmap(多级渐进)进行纹理过滤.115 8.6.5 创建 mipmap 链.116 8.6.6 选择并显示 mipmap.117 8.7 纹理资源.118 8.7.1 用纹理资源进行渲染.119 8.7.2 自动纹理管理.119 9 第九章 文件模型.121 9.1 文
11、件模型例题分析.121 9.2 网格模型分析.123 9.2.1 网格模型的顶点与索引.123 9.2.2 子集和属性缓冲.124 9.2.3 网格渲染.125 9.3 邻接信息.126 9.4 优化网格.127 9.5 属性表.129 9.6 克隆网格.130 9.7 顶点法线的创建.131 9.8 创建 Mesh(D3DXCreateMeshFVF).131 9.8.1 创建 MESH 有关函数.131 9.8.2 创建并渲染一个 Mesh.132 北京源点索思教育科技有限公司 游戏渲染基础教程 6 9.8.3 使用 Mesh 创建规范几何体.133 9.9*.X 文件的生成.133 9.
12、9.1 使用 XSkinExp 插件.134 9.9.2 使用 PANDA 插件.135 9.9.3 导出模型查看.137 10 第十章 ALPHA 与纹理压缩.138 10.1 阿尔法混合.138 10.1.1 混合原理.138 10.1.2 游戏中 Alpha 技术应用.140 10.1.3 ALHPA 数据源.141 10.2 阿尔法测试.141 10.3 压缩纹理资源.142 10.3.1 存储效率和纹理压缩.142 10.3.2 使用压缩纹理.143 10.3.3 创建压缩纹理.144 10.3.4 不透明和一位阿尔法纹理.144 10.3.5 带阿尔法通道的纹理.148 11 第十
13、一章 雾化效果与状态块.151 11.1 雾效.151 11.1.1 雾化的优点.151 11.1.2 雾化的计算.152 11.1.3 顶点雾化与像素雾化.153 11.1.4 基于距离的雾化.153 11.1.5 Direct3D 实现雾化效果.154 11.2 状态块.155 11.2.1 创建预定义的状态块.155 11.2.2 记录状态块.156 11.2.3 使用状态块.156 12 第十二章 字体与精灵.157 12.1 ID3DXFont 实现 2D 文字.157 12.2 D3DXCreateFont 实现 3D 文字.159 12.3 精灵渲染.161 北京源点索思教育科技
14、有限公司 游戏渲染基础教程 7 DirectX 与与 Direct3D 的简介的简介 本章介绍 DirectX 与 Direct3D 的基本概念。对 DirectX 的发展历史、DirectX 的安装、DirectX 的组成以及使用 DirectX SDK 开发多媒体程序的相关问题等内容进行介绍。1.1 计算机图形处理器计算机图形处理器 图形处理器是图形系统结构的重要组件,是连接计算机和显示终端的纽带。早期的图形系统包括一个 CPU、系统总线、主存、帧缓存、视频控制器和一个显示器 早期的图形系统结构中显示刷新频率和重新编址次数都较高,视频控制器对内存的存取次数也比较多,从而降低了 CPU 的工
15、作速度。图形处理器是图形处理系统中最关键的部分,也就是常说的显卡。一个显卡的主要配件有显示主芯片、显示缓存(简称显存)、数字模拟转换器(RAMDAC)。北京源点索思教育科技有限公司 游戏渲染基础教程 8 1.2 DirectX 与与 OpenGL 现在,3D 技术已经成为了游戏市场的主流,越来越多的游戏采用 3D 技术来展现游戏画面,所以,如果希望在当今的游戏程序开发行业中继续生存和发展下去,学习 3D 技术势在必行。由于各个不同的计算机硬件有所区别,显示卡的型号各不相同,这就给我们的 3D 开发带来了极大的困难,因此,采用一个通用的开发工具,避免对硬件的直接访问,是 3D 开发所应该具备的。
16、目前流行的 3D 开发环境有两种:OpenGL 和和 Direct3D 1.2.1 OpenGL 简介简介 OpenGL 原先是 Silicon Graphics Incorporated(SGI 公司)在图形工作站上开发高质量图像的接口。最近几年它成为一个非常优秀的开放式三维图形接口。实际上它是图形软件和硬件的接口,包括有 120 多个图形函数,“GL”是“GRAPHIC LIBRARY”的缩写,意思是“图形库”。OpenGL 的出现使大多数的程序员能够在 PC 机上用 C 语言开发复杂的三维图形。微软在 Visual C+6 中已提供了三个 OpenGL 的函数库(实用库(GLU32.li
17、b),辅助库(GLAUX.lib),GL 库(OPENGL32.lib),可以使我们方便地编程,简单、快速地生成美观、漂亮的图形。例如,Windows NT 中的屏幕保护程序中的花篮和迷宫等都给人们留下了深刻的印像。“3D 游戏之父”Carmack 便是 OpenGL 的有力支持者,他的经典游戏DOOM、Quake的 3D 引擎的底层都是 OpenGL 实现的。1.2.2 DirectX 介绍介绍 DirectX 是 Microsoft 公司开发,运行于 windows 平台,处理多媒体技术的引擎,可让以 Windows 为平台的游戏或多媒体程序获得更高的执行效率,加强 3D图形和声音效果,并
18、提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。用它开发的软件运行于硬件抽象层(Hardware abstraction layer)上,充分利用了硬件的加速功能。同时 DirectX 还支持软件参考层(Reference Layer)也可以叫做硬件仿真层(Hardware Emulation layer),使不支持硬件加速功能的硬件设备使用软件模拟相应的功能。介于它强大的功能,所以被广大游戏开发商看好,成为游戏开发的利器。北京源点索思教育科技有限公司 游戏渲染基础教程 9 1.3 DirectX 的发展的发展 Dire
19、ctX 自 1995 年诞生至今版本一直在不断更新,从最早的 DirectX 1.0 到最新的 DirectX 10.0。DirectX 2.0 3D 雏形出现 DirectX 3.0 D3D 发展壮大(代表经典游戏“红色警戒”)DirectX 5.0 D3D 日益强大(与当时 OpenGL 效果相当)DirectX 6.0 D3D 权威出现(第二代 3D 加速卡的问世)DirectX 7.0 D3D 权威确立(支持了 T&L)DirectX 8.0 D3D 的疯狂 (引入像素渲染的概念)DirectX 9.0 让人耳目一新(增加了一些 3D 效果,HLSL 语言的诞生)DirectX10.0
20、 GPU 的天下 1.4 DirectX 开发包的组成开发包的组成 1.DirectX Graphics 集成集成 DirectDraw 和和 Direct3D Microsoft DirectDraw 和 Microsoft Direct3D 并入了 DirectX Graphics 组件。该组件用于进行图形渲染,并且支持最新的图形硬件。最引人注目的新特性是支持可编程着色器(着色器是用着色语言编写的一段代码,着色语言是专为在可编程顶点流水线或可编程像素流水线中使用而设计的)。2.DirectX Audio 集成集成 DirectMusic 和和 DirectSound Microsoft D
21、irectMusic 和 Microsoft DirectSound 现在紧密集成到新的 DirectX Audio 组件中。WAV 文件或其他资源可以由 DirectMusic 加载器加载,通过DirectMusic 演奏器进行播放,并用 MIDI 音响进行同步。3.DirectPlay Microsoft DirectPlay 组件用于实现游戏的网络通讯,此外,DirectPlay 现在还支持玩家之间的语音通讯。4.DirectInput Microsoft DirectInput 用于管理鼠标、键盘等输入输出设备。5.DirectShow DirectShow 组件用于在游戏中进行多媒体
22、视频以及 MP3的音频文件的播放工作。北京源点索思教育科技有限公司 游戏渲染基础教程 10 1.5 HAL 与与 REF DirectX 图形标准库的应用程序接口位于一种称为“硬件抽象层”的体系结构之上。通过 DirectX 图形标准库,应用程序开发人员既可以充分利用硬件的加速功能,又可以避免直接操作硬件相关的设备特性,通过编写与设备无关的高效代码,使 DirectX 图形应用程序总是能以最佳方式运行。DirectX 的应用程序接口不能直接和硬件设备打交道,而是直接操作硬件抽象层。应用程序开发人员只要调用 DirectX 图形标准库中对应的功能接口就可以实现相关功能,而不需要针对不同的硬件进行
23、不同的调用。DirectX 图形标准库在用户调用功能接口时,会自动根据应用程序使用的硬件找到相应的驱动来实现功能效果。通过硬件抽象层来进行设备的访问使 DirectX拥有了设备无关性。当通过 DirectX 来调用不被硬件支持的功能时,可以通过软件模拟来实现。DirectX 与 GDI 处于同一层次,都可以通过图形设备驱动程序接口(DDI)访问图形硬件。D3D 还可以用 HAL 通过 DDI 来访问图形硬件,充分利用硬件的功能。HAL 设备通过硬件支持的特征设置提供硬件加速功能。1.5.1 硬件抽像层硬件抽像层(Hardware Abstraction Layer,HAL)Direct3D 连
24、同硬件供应商提供的显卡驱动程序,在显卡外围提供了一个非常薄的软件层,HAL 便是这个薄层的组成部分之一。即使系统中存在一个可用的 HAL,通常游戏也会根据 HAL 所能提供的特性来开启或关闭相应的特性。这个过程运作如下:1)游戏检查 HAL 的能力(capability);2)游戏适当地开启或关闭某些特性;3)若某些特性被关闭,便会以一种低效的方法来实现,可能是模拟某个特性。北京源点索思教育科技有限公司 游戏渲染基础教程 11 这通常会导致图像质量降低。HAL 有 4 种不同的顶点处理方法。包括:SW VP(软件顶点处理)Mixed VP(混合顶点处理)HW VP(硬件顶点处理)Pure VP
25、(纯顶点处理)1.5.2 软件参考层软件参考层 REF(Reference Layer)在硬件不支持的条件下,通过 CPU 来模拟效果。1.6 DirectX 与与 COM 技术技术 COM(组件对象模型,Component Object Model)对象是对一组特定功能的抽象集合,应用程序不能直接访问 COM 对象,而是必须通过 COM 对象接口(Interface)的指针执行 COM 对象的功能。DirectX 正是采用了 COM 技术实现的,所以我们必须知道 DirectX 顶层的接口指针,才能使用 DirectX 的方法 COM 是组件对象模型。COM 技术使 DirectX 具有语言
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 游戏 渲染 基础教程
限制150内