一种通过多核CPU一一对应矢量数据的绘制方法与流程

文档序号:12127698阅读:701来源:国知局

本发明属于软件开发技术领域,特别是涉及一种通过多核CPU一一对应矢量数据的绘制方法。



背景技术:

快速地在计算机终端显示器上显示矢量数据,一直是各种地理信息系统(Geographical Information System,GIS)软件以及制图软件需要解决的问题。目前图形领域中的许多应用仍然是单线程,大多数的GIS软件图形绘制方法仍然采用串行处理方式,依靠单核CPU单线程模式循环遍历绘制每个矢量数据图层及其每个要素,对于每绘制一遍海量数据图层,需要漫长等待,绘图效率极低。这种效率低下的图形绘制方式限制了大多数GIS软件绘图性能,因此必须改进矢量数据的绘制方式,提高图形绘制的效率。

计算机技术的革新,特别是在计算机CPU的发展方面,出现了多核处理器的体系结构。多核化趋势正在改变并行计算的面貌,跟传统的单核CPU相比,多核CPU带来了更强的并行处理能力、更高的计算密度和更低的时钟频率。多核平台的应用越来越广泛,逐渐渗透到计算机科学的各个领域,并将取代单核平台成为今后处理器发展的主流方向。双核、四核、八核甚至更多核CPU的计算机出现,串行矢量数据的绘制方式,它既不能提高矢量数据的绘制效率,也不能有效地利用多核CPU的硬件优势。



技术实现要素:

本发明的目的在于提供一种通过多核CPU一一对应矢量数据的绘制方法,通过采用多核的CPU进行快速绘制海量矢量数据的方法,使得图形绘制效率得到明显提高,解决了矢量图层之间的并行绘制以及图像合成问题。

为解决上述技术问题,本发明是通过以下技术方案实现的:

本发明为一种通过多核CPU一一对应矢量数据的绘制方法,包括如下步骤:

步骤一,由程序主线程派生出线程组,每个线程组对应一个CPU核,把所需要显示绘制的矢量图层分配到每个CPU核上绘图处理;

步骤二,在每个线程组上派生IO(Input/Output)数据流水线和DC(Device Content)图形绘制流水线,通过数据流水线进行数据获取任务;通过图形绘制流水线进行图形绘制任务;

步骤三,任务处理完成后在主线程中进行最终图像合成显示,达到在单机上进行并行绘制。

该矢量数据的绘制包括矢量数据存储结构、本地缓存、内存位图池和线程组模型。

程序开始执行时,只有一条主线程,程序中的串行部分都由主线程执行。主线程会派生出线程组,线程组和主线程一起并行执行完成任务,并行区域结束时,子线程组全部合并到主线程,主线程继续执行到程序终结。线程组之间并行工作,由IO数据流水线和DC图形绘制流水线,分别进行矢量数据的获取和绘制。在并行区域中,同时并行工作的线程组不超过CPU核数。

如果绘制的矢量图层数目大于CPU的核数,则在下一次循环建立线程组模型进行作业,直到所有矢撤图层绘制完毕,按照矢量图层叠加的先后顺序进行图像合成,显示在计算机屏幕上。

本发明具有以下有益效果:

本发明通过采用多核的CPU进行快速绘制海量矢量数据的方法,使得图形绘制效率得到明显提高,解决了矢量图层之间的并行绘制以及图像合成,提高系统运行的稳定性和数据处理的合理性。

当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的一种通过多核CPU一一对应矢量数据的绘制方法流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1所示,本发明为一种通过多核CPU一一对应矢量数据的绘制方法,包括如下步骤:

步骤一,由程序主线程派生出线程组,每个线程组对应一个CPU核,把所需要显示绘制的矢量图层分配到每个CPU核上绘图处理;

步骤二,在每个线程组上派生IO(Input/Output)数据流水线和DC(Device Content)图形绘制流水线,通过数据流水线进行数据获取任务;通过图形绘制流水线进行图形绘制任务;

步骤三,任务处理完成后在主线程中进行最终图像合成显示,达到在单机上进行并行绘制。

该矢量数据的绘制包括矢量数据存储结构、本地缓存、内存位图池和线程组模型。

其中,矢量数据存储结构:海量矢量数据一般采用大型关系型数据库Oracle,SqIServer存储,并建立与矢量图层对应的空间索引结构。空间索引介于空间操作算法和空间对象之间,通过它的筛选,大量与特定空间操作无关的空间对象被排除,使空间操作能够快速访问操作对象,从而提高空间操作的效率。

其中,本地缓存(Load Cache)是绘制的矢量数据图层在计算机终端内存中开辟的临时存储区域,采用循环存储,由获取远程矢量数据的IO流水线和图形绘制DC流水线共同维护。IO数据流水线和DC图形绘制流水线通过信号通信保持同步工作,IO数据流水线读取数据順序放入缓存中,DC图形绘制流水线顺序从缓存中取出数据进行绘制。在绘制矢量数据时,IO数据流水线和DC图形绘制流水线几乎不需要相互等待,避免获取一条数据绘制一条数据的作业方式,提高获取数据和绘制数据的工作效率。

其中,内存位图池采用OpenGL,Directx3D和GDI进行渲染。

程序开始执行时,只有一条主线程,程序中的串行部分都由主线程执行。主线程会派生出线程组,线程组和主线程一起并行执行完成任务,并行区域结束时,子线程组全部合并到主线程,主线程继续执行到程序终结。线程组之间并行工作,由IO数据流水线和DC图形绘制流水线,分别进行矢量数据的获取和绘制。在并行区域中,同时并行工作的线程组不超过CPU核数。

如果绘制的矢量图层数目大于CPU的核数,则在下一次循环建立线程组模型进行作业,直到所有矢撤图层绘制完毕,按照矢量图层叠加的先后顺序进行图像合成,显示在计算机屏幕上。

值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。

以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1