3 分析
在进行毕业设计之前,首先需要分析整个系统的框架、理清程序思路、选择合适设计策略,为下一步的设计过程进行铺垫。
3.1 系统需求分析
系统需求分析的主要目的是分析系统需要完成什么、达到什么样的要求。本系统主要完成下面的要求:
实现大型的地形渲染:通过Direct3D11实现大型地形渲染算法
通过摄像机在地形自由查看:通过键盘和鼠标在地形中自由查看
3.1.1 系统概述
本系统的目的借助Direct11图形API居于一种算法实现大型的地形渲染,并且在渲染后的地形中实现自由的参看。
3.2 基本算法分析
所以算法的核心是可变尺寸的Patch,每一个patch是一个正方形,包含四个定点,每个定点包含3个坐标(x、y、z),相同大小的patch组成一个环称为Ring,并且外围Ring的Patch的尺寸是内部Ring的Patch的尺寸的两倍。相邻两个Ring之间的过度由一个特殊的Ring完成。
算法的下一步是按照某种策略对Patch进行曲面细分,将一个正方形的Patch细分为多个小三角形,本课题渲染的策略是根据Patch的边长在屏幕上的投影长度来决定细分的程度,最后根据一个高度图(8为raw格式图像)来给细分后的每个三角形的三个顶点赋予高度(y坐标,左手坐标系,y轴向上)。
算法的最后的一步是对地形进行贴图和光照处理,这里的策略是根据地形的坡度和高度来地形贴上不同的纹理贴图,光照计算所需的法向量使用center differnece公式计算。
3.3 图形API分析源:自*优尔~·论,文'网·www.youerw.com/
本毕业设计使用的是Direct3D 11图形接口渲染地形,DirectX是微软开发的一个基于Windows和XBox平台的多媒体编程接口,包含2D渲染、3D渲染、网络、声音、输入输出等多个方面,其最终要的部分是Direct3D。Direct3D11于2009年发布,加入了全新的硬件功能和全新的API接口。相比于上一个版本的Direct3D,Direct3D11功能更加强大、API负荷更小、支持新一代的图形处理器。在我的毕业设计中将需要使用Direct3D11新增的两个着色器(域域着色器和外壳着色器)来实现核心算法,Direct3D11新增的两个着色器使得开发人员能够充分利用GPU,以及实现更好的LOD。
3.4 模块分析
本系统分为两个模块:系统核心模块(NatCore.dll)和渲染模块(Terrain.exe),系统核心模块负责处理底层任务,其具体任务为:创建程序主窗口、初始化和管理Direct3D11设备、创建和管理渲染目标(交换链、深度模板缓存)、提供贴图加载接口、处理Windows消息循环并且转发给适当的消息处理器、实现高精度计时器、处理图形设备丢失等等,该模块以动态链接库的形式生成,目的是实现可重用性,其提供的接口均为抽象类,接口实例通过C语言约定导出的C函数创建;渲染模块主要渲染本毕业设计的地形,由于核心模块已经完成底层相关的任务,所以在该模块的实现中只需考虑地形渲染的实现,无需考虑底层初始化和管理问题,该模块以可执行文件形式(exe)生成,包含整个系统的入口点(WinMain)。
3.5 目标平台分析
由于选择的图形API为Direct3D11所以,本程序的目标平台为Windows 7 sp1以及更高版本的Windows,因为Direct3D11的最低客户端操作系统为Windows 7和Windows Vista SP1,由于程序中可能需要使用到DirectWrite、Direct2D等内容,所以目标系统选择为Windows 7Sp1。文献综述