论文部分内容阅读
地形可视化技术常用于虚拟环境、地理信息系统等。在地形可视化系统中,通常采用LOD(层次细节)技术来实现视点相关的动态网面构建。随着地形采样技术的发展,地形数据的分辨率越来越高,数据量也越来越大,传统的LOD算法在构建地形网面时要将所有地形数据读入主存,生成地形网面后再通过图形库传输到显卡进行渲染,当地形数据量很大时,数据传输效率会下降。另外,近年来随着GPU技术飞速发展,越来越多的人尝试利用GPU完成许多以前只有CPU才能处理的任务。因此,本文着重研究了LOD算法在GPU上实现的问题,主要工作如下:提出一种自适应地形数据二维纹理化算法。传统的LOD算法在构建地形网面时,都对地形数据直接采用自顶向下的方法构建网面,虽然算法较为简单,但当地形数据量很大时,顶层网面的数据跨度非常的大,这种情况会导致操作系统频繁的读盘,但每次读盘的数据量又很小,极大地降低了系统的运行效率。本文提出一种自适应地形数据二维纹理化算法,以当前视锥体参数、GPU的显存容量为输入,输出最优分块数,然后将每个子块构建成二维纹理并将纹理发送到显存,GPU直接从显存读取高程值并构建网面,大大提高了渲染速度。提出一种能在GPU中操作树结构的数据组织形式(四叉堆)及其相应的LOD地形渲染算法。由于GPU的指令集中不包含指针操作,传统的LOD算法使用的四叉树、三角二叉树等结构又都包含指针域,为了使GPU能够操作上述层级结构,本文提出四叉堆结构。该结构既可以存储地形网面中的层级信息,又支持数组的向量操作,实现了在GPU上执行LOD的数据结构。设计并实现了一个基于GPU加速的地形可视化系统。本文在C++和OpenGL环境下,采用Nvidia Cg语言编写了基于四叉堆的LOD算法实现,并在实验GPU上的几何着色器上运行,实验结果表明,渲染同样的画面,该算法的帧速率、三角形吞吐量和带宽均优于传统四叉树算法。