嵌入式gpu实现3d-gis的快速渲染系统的制作方法

文档序号:6362949阅读:434来源:国知局
专利名称:嵌入式gpu实现3d-gis的快速渲染系统的制作方法
技术领域
本发明属于嵌入式技术领域,具体涉及到采用嵌入式GPU终端实现3D-GIS地图的快速渲染系统。
背景技术
目前,嵌入式图形都是二维图形的应用,最常见的应用实例有俄罗斯方块、贪吃蛇等小游戏。此外,有些嵌入式设备上还支持摄像保存、发送以及接收操作,这些都是基于图片的编解码及图形显示的原理,虽然这些应用比起贪吃蛇这类应用要求更加复杂,但是只要仔细分析就会发现,所有的这些图形应用还是局限于二维平面上。随着集成电路工艺的发展,一些单芯片设计已经开始具备了类似处理3D图形计算的能力。3D图形的硬件加速已经不再局限于个人电脑和工作站,同样能在嵌入式系统上实现。在3D图形领域中,对于个人电脑而言,3D图形硬件加速这一技术已经趋于成熟。但是对于消费类电子行业,如何构建一个低成本,低功耗,高质量显示的嵌入式3D图形处理芯片还是一个新的挑战。嵌入式硬件平台一般都是因为一些特殊的需要而产生的具有比较单一目的而开发的,它有成本低、性能稳定、硬件资源少、功耗低等特点。也正是由于这样一些原因,在这样的平台上进行三维开发必然带来成本上升,而且三维计算量大也会导致系统资源捉襟见肘。导致嵌入式平台上三维图形学应用和计算机上的应用相差甚远的原因,并不是嵌入式平台上没有进行三维应用的必要,而是嵌入式系统平台硬件资源有限,在一个不具备图形硬件的平台上几乎不可能完成比较复杂的三维模型的建模及显示。以最为普遍使用的移动设备手机为例,传统的游戏和视频都是通过CPU来进行算术运算,这大大消耗了 CPU的资源,导致嵌入式多媒体的发展遭遇瓶颈;而且,嵌入式技术注重低功耗技术,电池寿命往往严重影响到嵌入式设备的性能,大量的三维模型运算和带宽消耗必将导致电池寿命的缩短。随着SOC技术的不断发展,使得芯片的集成度越来越高,可编程图形硬件技术也在不断的发展进步,体积和价格都有了大幅下降。由于消费类嵌入式电子设备有向集成度更高,多媒体功能更加丰富、数据处理能力更强的方向发展的趋势。目前,一些嵌入式多媒体芯片推向市场,不仅在声音处理、图片保存及显示等功能上有了很大的突破和发展,目前已经向3D加速的功能上迅速发展。可编程图形硬件技术不断进步,使得利用硬件实时绘制三维图形成为可能。这极大地推动了嵌入式三维图像处理的开发。

发明内容
本发明提出一种针对嵌入式终端开发的3D-GIS电子地图系统,该系统可以实现用户终端和服务器的实时交互,并在用户终端上利用嵌入式GPU进行实时3D渲染。整个系统包括服务器、客户端和GIS数据库三个部分。
服务器用于制作模型、控制数据流、数据获取、数据传送。GIS数据库可进一步细分为两类2D-GIS数据库和3D-GIS数据库。服务器的数据传送主要是指根据客户终端的请求从GIS数据库中获取数据并通过网络传送给客户终端,客户终端是使用嵌入式GPU的嵌入式设备,嵌入式GPU主要负责将服务器传送过来的GIS数据进行渲染并显示在屏幕上。客户终端的系统框架由硬件层、驱动层、系统平台和应用层组成。所述客户端的系统框架硬件层,由嵌入式终端和3D-GIS功能关联的硬件组成,主要包括主处理器CPU、嵌入式GPU、输入设备(键盘以及鼠标)、显示屏、内存等等。所述客户端的系统框架驱动层,表示该层是直接和硬件交互的软件驱动层,由串口驱动、SDUEGLJPOpenGL ES组成。其中,串口驱动直接提供GPS数据的解析和接收。SDL 函数提供对键盘、鼠标和触摸屏的支持,能够为嵌入式GIS的导航提供人机交互,对3D地图进行旋转和缩放。EGL提供的是对本地视窗系统的支持,有了 EGL的支持,可以在嵌入式设备上实现无窗口管理系统,节省了很大部分的嵌入式资源。OpenGL ES为3D地图绘制和大规模的场景渲染提供了 API,结合PowerVR SGX的API函数接口,进行3D-GIS地图的快速渲染。所述客户端的系统平台,一般采用嵌入式Linux,嵌入式Linux是以Linux为基础的嵌入式作业系统,它被广泛应用在移动电话、个人数字助理(PDA)、媒体播放器等消费类电子广品。所述客户端的应用层,是客户端系统的最上面的一层,通过调用系统API、视窗管理API (EGL)、PowerVR Shell API、OpenGL ES API实现3D场景的绘制和大规模地图的渲染。本发明提出了一种针对嵌入式GPU实现3D的大规模场景绘制和渲染的系统,其主要流程包括模型制作、数据操作、CPU和嵌入式GPU初始化、场景渲染、3D场景显示和资源回收等环节。(I)模型制作在服务器上运行三维建模软件,例如3DMax Maya等软件,完成三维地图建模和场景设置,得到带渲染的数据文件,并将这些3D数据存放于3D-GIS数据库中。(2)数据操作服务器根据客户终端发来的请求,确定所需要的2D和3D地图数据,并从GIS数据库中获取这些数据,最后将这些数据传送给客户终端。所述的2D和3D地图数据,是根据客户终端发送过来的请求确定的。用户在进行地图选择时,通过鼠标或者触摸屏选择所需要的地图部分,该部分为用户期望显示于显示屏中央的部分,如果该部分的3D数据在客户端不存在,那么客户终端想服务器发送请求获取数据。服务器根据用户所需要的位置,从3D-GIS数据库获取该部分的3D数据,并从2D-GIS 数据库获取所需地图位置周边区域的2D数据,并将这些2D、3D数据一起发送给客户终端进行显示。(3)客户终端CPU和GPU初始化CPU开辟内存空间,加载地图数据到内存中,SDL 初始化,提供触摸屏、鼠标、键盘响应的支持;串口驱动程序接收和解析GPS协议数据;嵌入式GPU初始化,开辟足够的显存存放多边形数据。(4)场景渲染CPU将需要渲染的静态帧渲染任务分解成若干渲染子任务(以块为单位),通过总线发送到嵌入式GPU,嵌入式GPU并行渲染节点,对渲染子任务并行处理,完成渲染工作,得到渲染后的静态帧。(5) 3D场景显示嵌入式GPU计算得到的数据传送到屏幕显示映射内存空间并在触摸显示屏上进行显示。(6)资源回收程序结束后,CPU释放开辟的内存空间,GPU释放开辟的显存空间, 进行资源回收。


图I.系统组成结构图2.设备终端实现框架3. PowerVR SGX的硬件架构图4. OpenGL ES 2. O可编程管线处理流程图5.典型的EGL系统布局6.客户端的程序流程图
具体实施例方式以下结合附图和具体的实施用例来对本发明进一步额详细说明。需要指出的是, 本发明可以以许多不同的实施方式实现,而并不局限于本文所述的实施方式。本发明提出一种针对嵌入式终端开发的3D-GIS电子地图系统,该系统可以实现用户终端和服务器的实时交互,并在用户终端上利用嵌入式GPU进行实时3D渲染。如图I 所示,整个系统包括服务端和客户端两个部分。服务端由服务器和GIS数据库组成。服务器用于制作模型、控制数据流、数据获取、数据传送。GIS数据库由两部分组成2D-GIS数据库和3D-GIS数据库。其中3D-GIS数据库是由服务器通过使用3D模型软件经过模型制作生成的。服务器的数据传送主要是指服务器根据客户终端的请求从GIS数据库中获取数据并通过网络传送给客户终端,服务器所获取和传送的数据既有2D数据也有3D数据。客户终端的平台处理器包括嵌入式CPU和嵌入式GPU等主要组成部分,其中,CPU 主要负责硬件的管理、数据流的控制和网络交互,嵌入式GPU主要负责将服务器传送过来的GIS数据进行渲染并显示在屏幕上。下面基于AM3517平台为例作详细介绍,该平台的微处理器(MPU)采用了 ARMCortex-AS,另外还使用了嵌入式GPU进行图形计算及显示。该平台具有很强的处理核心和三维图形加速功能。它的嵌入式GPU图形引擎为PowerVR SGX,该图形引擎处理速度达每秒IOMpolygon,并支持OpenGL ES 2. O,可加速实现3D图形用户界面。3D-GIS快速渲染系统的客户终端可以从结构上分为硬件结构和软件设计。硬件结构主要有ARM主处理器芯片、PowerVR嵌入式GPU、输入设备(如键盘和鼠标等)、输出设备(IXD显示屏)和存储器。软件方面涉及到嵌入式Linux操作系统、SDUOpenGL ES, EGL 等等。图2是客户终端设备整个系统的实现框架图。客户终端3D-GIS电子地图框架由硬件层、驱动层、系统平台和应用层组成(I)硬件层主要包括嵌入式终端和3D-GIS功能关联的硬件。a)主处理器 ARM Cortex_A8 ;
b)键盘鼠标;c)嵌入式图形显不卡PowerVR SGX ;d) LCD触摸显示屏;e)内存。(2)驱动层该层是直接和硬件交互的软件驱动层,串口驱动直接提供GPS数据的解析和接收,GPS数据用于用户终端开机或者重置时进行当前地理位置的确定,并从服务端获取当前位置地图数据进行默认显示。SDL函数提供了对键盘、鼠标和触摸屏的支持,以让用户选择所需要的地理位置,为嵌入式GIS的导航提供人机交互,对3D地图进行旋转和缩放。EGL提供了对本地视窗系统的支持,有了 EGL的支持,可以在嵌入式设备上实现无窗口管理系统,节省了很大部分的嵌入式资源。OpenGL ES为3D地图绘制和大规模的场景渲染提供了 API,结合PowerVR SGX的API函数接口,进行3D-GIS地图的渲染。(3)系统平台系统平台采用了嵌入式Linux,嵌入式Linux是以Linux为基础的嵌入式作业系统,它被广泛应用在移动电话、个人数字助理(PDA)、媒体播放器、消费类电子
女口
广叩ο(4)应用层这是最上面的一层,通过系统API、视窗管理API (EGL)、PowerVR Shell API、OpenGL ES API提供了 3D场景的绘制和大规模地图的渲染。其中PowerVR SGX 有三个显著的优点,首先是 TBDR(Tile_Based Deferred Rendering)省电架构,可在片上内存中处理隐藏面消除(Hidden Surface Removal)和混合(Blending),通过减少内存数据带宽而达成省电效果;其次是可编程的通用可伸缩说色引擎(Universal Scalable Shader Engine, USSE),此模块为芯片的运算中心。USSE可将各个着色器的工作(包括顶点处理和像素处理)自动配置给USSE中多个执行单元,让硬件使用率达到最佳状态;最后是省电技术,除了 TBDR外,同时也使用频率闸控方式来确保最少的待机耗电量。PowerVR SGX的硬件架构如图3所示,主要包括主处理器接口、系统存储器接口、几何图形管理器、图像合成处理器(ISP)、粗粒度调度器(CGS)、通用可伸缩着色引擎 (USSE)、块协处理器以及多级缓存等。3D图形处理芯片是一个比较复杂的系统,往往由很多特殊和复杂功能的子系统组成。下面是三角形在PowerVR SGX管线渲染的工作流程步骤I :基本图元数据通过粗粒度调度器CGS模块处理后递交给通用可伸缩着色引擎(USSE),处理过程是通过顶点着色器程序来产生输出。步骤2 :输出的数据被传送到块着色单元。它负责场景的裁剪、表面剔除和分块渲染。之后,块着色单元将其产生的压缩数据流传入到内存中,图像综合处理器(ISP)对分立的块中的相关三角形进行渲染。步骤3 :经过这一系列设置操作,三角形数据真正进行了深度/模板测试的加工。步骤4 :之后这些分块的数据会被传送到ISP然后进入到USSE进行片段着色。步骤5 =UUSE的数据处理结果将被像素协处理器处理运算后写入片上的缓冲区中。步骤6:输出显示。上面描述了三角形在PowerVR SGX中的渲染过程,下面就其进行3D图像显示及大规模数据处理流程进行详细描述。(I)构建场景数据。第一步主要由CPU执行操作,CPU运行由OpenGL编写的程序,程序的输出都是基于基本的三角形操作,输出被存放到缓冲区内,对于PVRSG (PowerVR Second Generation technology),这个缓冲区必须大到容纳所有的三角形数据。(2)分块操作。这是PVRSG执行的第一个操作,不同于在传统的立即渲染技术中计算场景缓冲区中每一个多边形,而不管可见与否。PVRSG只是渲染那些最终在屏幕上可见的像素。PowerVR的TBR (TiIe-Based Rendering)在几何运算后,将屏幕的像素分成了很多矩形小块,先经过每个小块的深度测试,测试小块是否可见决定小块中的像素是否应当被渲染,之后将需要被渲染的部分再交给渲染管线去处理,最后输出。这样一来,不可见的像素已经提前被剔去不用被渲染,很大程于上节省了带宽,减少了渲染管线的压力。(3)隐藏表面算法。隐藏表面算法是PVRSG很有趣的一部分,隐藏表面算法作用于每一个小块,每块大约32x16像素。工作流程如下(a)从块缓冲区获得指向特定具体块的第一个指针;(b) 使用获得的三角形数据为这个块中的每个像素计算得到深度值(Z-value) ; (c)计算得到的拥有深度值的块被存储在片上芯片中,然后计算下一个块,如此循环直到结束。(4)渲染。渲染需要使用前面获得信息一个包含所有的像素将要被渲染的块的缓冲区,指向存放在场景缓冲区中的三角型数据的指针,这些数据决定了顶点的颜色和其他一些属性。(5)传送到帧缓冲。最后一步很显然就是将所有要输出显示的块转移到缓冲区中的显示内存中,完毕就可以完整的显示场景了。这里可以加入反锯齿的一些操作。系统的软件部分包括OpenGL ES、SDL、EGL三大部分,下面针对OpenGL ES进行详细的描述。图4显示的是OpenGL ES 2. O可编程管线处理流程。相对于OpenGL ES I. X固定管线,OpenGL ES 2. O中的Vertex Shader和Fragment Shader是两个可编程功能模块,因此,可以通过该功能来实现现实3D的快速显示。OpenGL ES本质上是一个图形渲染管线的状态机,主要对图元进行顶点和片段着色处理,外加其他一些附加渲染,最后将处理结果交给FrameBufTer (帧缓存)。而EGL则是用于监控这些状态以及维护Framebuffer和其他渲染Surface的外部层。图5是一个典型的EGL系统布局图。OpenGL ES图形管线的状态被存储于EGL管理的一个Context中。Frame Buffers 和其他绘制Surfaces通过EGLAPI创建、管理和销毁。EGL同时也控制和提供了对设备显示和可能的设备渲染配置的访问。OpenGL本身并不支持一些交互性操作,所以我们引入了 SDL来实现人机交互,通过引入键盘、鼠标事件以及触摸屏来实现对3D场景的控制、变换视角、旋转、缩放、漫游和其他娱乐功能(如点击标志来观看视频等等)。以上描述了客户端的硬件架构和软件平台,本发明所提出的基于服务端和客户端的系统,其主要流程包括服务端模型制作、数据操作、客户端CPU和嵌入式GPU初始化、 场景渲染、3D场景显示和资源回收等部分。在这里所述的CPU和嵌入式GPU分别指的是 ARMCortex-A8 和 PowerVR SGX。
(I)模型制作在服务器端运行三维建模软件,例如3DMax Maya等软件,完成三维地图建模和场景设置,得到带渲染的数据文件,并将这些3D数据存放于3D-GIS数据库中。(2)数据操作服务器根据客户终端发来的请求,确定所需要的2D和3D地图数据,并从GIS数据库中获取这些数据,最后将这些数据传送给客户终端。所需的2D和3D地图数据,是根据客户终端发送过来的请求确定的。用户在进行地图选择时,通过鼠标或者触摸屏选择所需要的地图部分,该部分为用户期望显示于显示屏中央的部分,如果该部分的3D数据在客户端不存在,那么客户终端想服务器发送请求获取数据。服务器根据用户所需要的位置,从3D-GIS数据库获取该部分的3D数据,并从2D-GIS 数据库获取所需地图位置周边区域的2D数据,并将这些2D、3D数据一起发送给客户终端。 客户端接受这些数据并进行显示。(3)客户终端CPU和GPU初始化CPU开辟内存空间,加载地图数据到内存中,SDL 初始化,提供触摸屏、鼠标、键盘响应的支持;串口驱动程序接收和解析GPS协议数据;嵌入式GPU初始化,开辟足够的显存存放三角形数据。(4)场景渲染CPU将需要渲染的静态帧渲染任务分解成若干渲染子任务(以块为单位),通过总线发送到嵌入式GPU,嵌入式GPU并行渲染节点,对渲染子任务并行处理,完成渲染工作,得到渲染后的静态帧。其中涉及到透明和半透明图形处理。(5) 3D场景显示嵌入式GPU计算得到的数据传送到屏幕显示映射内存空间并在触摸显示屏上进行显示。(6)资源回收程序结束后,CPU释放开辟的内存空间,GPU释放开辟的显存空间, 进行资源回收。为了能够充分利用嵌入式GPU PowerVR的强大功能,需要结合其硬件特性进行程序设计。并按顺序执行以下五个步骤(I) InitApplication :这函数是在任何API函数初始化之前被调用,用于加载应用程序所需数据,例如物体位置,顶点数据数组等,而不需要调用其他任何API函数。在这里我们实现开辟内存空间,以用来加载地图数据;(2) InitView :这个函数在InitApplication函数被初始化后调用,用来做剩余的初始化工作,由函数来调用完成。在这里主要是初始化串口,以用于传输GPS定位信息,以及SDL和EGL的初始化等操作。(3) RenderScene :这个函数循环被调用来绘制所有几何物体。返回false值进入退出序列。在这里加载的地图数据和大规模场景数据被送到嵌入式GPU中进行运算,采用了 TBDR技术,通过顶点和片段着色单元计算最后的输出数据,并将最终数据保存在内存区域中。(4) ReleaseView :这个函数在API函数被释放前调用,用于释放API函数调用的系统资源,例如顶点和片段缓冲区的释放。(5) QuitApplication :这个函数最后被调用,当所有的API函数被释放后,它用来释放剩余的用户分配的内存。整个客户端的程序设计图如图6所示,其中包括了终端对用户的响应以及与服务端的交互。在本发明中,我们引入了嵌入式GPU =PowerVR.,它为我们解决了嵌入式设备中的功耗过大、带宽不足、运算缓慢等技术瓶颈,引领了移动设备和手持设备多核化的新潮流。 能够实现高清晰的多细节的3D大规模场景的快速实现。最后应说明的是,以上实例只是针对所提方案的一个实现例程,只是为了说明本发明而不是限制本发明描述的技术方案;因此尽管本说明书参考上述的实施实例对本发明进行详细的说明,但本领域的普通技术人员应当理解,仍然可以对本发明进行修改或者等同替换;而一切不脱离本发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.嵌入式GPU实现3D-GIS的快速渲染系统,其特征在于系统包括服务器,GIS数据库,客户终端,服务器和客户终端通过网络进行数据交互,地图数据保存在GIS数据库中, 客户终端获得地图数据后进行3D地图的显示。
2.根据权利要求I所述的嵌入式GPU实现3D-GIS的快速渲染系统,其特征在于所述服务器的功能,主要包括制作模型、控制数据流、数据获取、数据传送四个部分,其中制作模型表示服务器具有对三维地图进行建模和场景设置以生成3D数据的功能;控制数据流表示服务器具有控制数据接收和发送以及控制从GIS数据库获取的数据量和向用户发送的数据量的功能;数据获取表示服务器需要从GIS数据库进行数据访问并将获得数据传送给用户;数据传送表示服务器需要将数据传送给用户。
3.根据权利要求I所述的嵌入式GPU实现3D-GIS的快速渲染系统,其特征在于所述 GIS数据库包括由两个部分组成,2D-GIS数据库和3D-GIS数据库,分别存放2D和3D地图数据。
4.根据权利要求I所述的嵌入式GPU实现3D-GIS的快速渲染系统,其特征在于所述客户终端为嵌入式终端,包括两类处理单元组成嵌入式CPU和嵌入式GPU,嵌入式CPU负责一般的控制和计算,嵌入式GPU负责3D场景的快速渲染以实现画面的快速显示。
5.根据权利要求I所述的嵌入式GPU实现3D-GIS的快速渲染系统,其特征在于所述客户终端可以为移动终端,也可以为固定终端,客户终端与服务器交互的网络可以是有线网络和无线网络。
6.根据权利要求I所述服务器和客户终端的交互,其特征在于客户终端向服务器进行数据请求,请求包含需要显示3D地图对应的地理位置信息,服务器根据该位置信息向 GIS数据库获取数据,获取的数据为客户端所请求地理位置的3D地图数据及该地理位置周边区域的2D地图数据,并将这些数据一并传送给客户终端。
7.根据权利要求I所述服务器和客户终端的交互,其特征在于客户终端将获得地图数据进行显示,其中包括2D和3D数据,显示在客户终端显示屏上的是3D地图,在这些地图周围的2D地图数据存放于客户终端本地,当用户对显示地图进行移动时,这些2D地图则会被显示,不需要再与服务器进行交互,但是如果用户所选择地理位置部分没有3D数据,并且本地存在2D数据,则进行2D地图显示,并向服务器进行数据请求,否则如果客户终端本地不存在2D数据,则直接向服务器进行数据请求。
全文摘要
本发明针对在一般嵌入式平台上进行大量三维运算中存在的计算资源短缺的问题提出了一种基于嵌入式GPU实现3D-GIS的快速渲染系统。使用嵌入式GPU满足了嵌入式平台低功耗、大运算、低带宽的计算资源要求,实现了嵌入式平台上3D-GIS的快速渲染及显示。本发明公开的系统由服务器、GIS数据库和客户终端三大部分组成,通过网络可以实现用户终端和服务器的实时交互,借助嵌入式GPU强大的并行计算能力和3D渲染算法,最终实现在嵌入式终端上进行实时显示3D地图的功能。
文档编号G06F17/30GK102609971SQ20121000693
公开日2012年7月25日 申请日期2012年1月11日 优先权日2012年1月11日
发明者严正飞, 刘烨, 季晓勇, 张李晔, 王健, 韦峰 申请人:南京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1