预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN109215103A(43)申请公布日2019.01.15(21)申请号201811005869.X(22)申请日2018.08.30(71)申请人西安恒歌数码科技有限责任公司地址710000陕西省西安市雁塔区创业大厦第五幢4单元601室D605号(72)发明人何泉李鹏飞张尚何振王坤刘洋(74)专利代理机构西安通大专利代理有限责任公司61200代理人徐文权(51)Int.Cl.G06T15/00(2011.01)G06T15/04(2011.01)权利要求书1页说明书3页附图1页(54)发明名称一种基于OSG的大批量文字渲染方法(57)摘要一种基于OSG的大批量文字渲染方法,包括以下步骤:步骤1,将系统中所有文字的字符纹理合并到一张或者多张合并纹理上;步骤2,修改文字顶点的纹理坐标,使其指向新生成的大纹理中对应的位置;步骤3,合并文字顶点,将所有的文字顶点合并到一块顶点内存中,并修改其索引值;步骤4、绑定步骤1-3中创建的顶点,索引,纹理坐标内存,绑定合并后的纹理,进行渲染。将几千批的渲染次数骤降为几批,从而在保证同样显示效果的基础上提升了渲染效率。CN109215103ACN109215103A权利要求书1/1页1.一种基于OSG的大批量文字渲染方法,其特征在于,包括以下步骤:步骤1,将系统中所有文字的字符纹理合并到一张或者多张合并纹理上;步骤2,修改文字顶点的纹理坐标,使其指向新生成的大纹理中对应的位置;步骤3,合并文字顶点,将所有的文字顶点合并到一块顶点内存中,并修改其索引值;步骤4、绑定步骤1-3中创建的顶点,索引,纹理坐标内存,绑定合并后的纹理,进行渲染。2.根据权利要求1所述的一种基于OSG的大批量文字渲染方法,其特征在于,步骤1具体为:创建一张合并纹理,然后遍历每一个文本对象,取出其中的字符纹理,然后将字符纹理的像素值写入到合并纹理中,如果一张合并纹理不足以存储全部字符纹理,那么再创建一张新的合并纹理,并重复步骤1。3.根据权利要求2所述的一种基于OSG的大批量文字渲染方法,其特征在于,合并纹理的大小为512*512像素、1024*1024像素或2048*2048像素。4.根据权利要求1所述的一种基于OSG的大批量文字渲染方法,其特征在于,步骤2具体为:创建一块纹理坐标内存,然后遍历每一个文本对象,修改其纹理坐标,使其指向在步骤1中合成的合并纹理中对应的位置,然后将新的纹理坐标写入到纹理坐标内存中。5.根据权利要求1所述的一种基于OSG的大批量文字渲染方法,其特征在于,步骤3具体包括:1)创建一块顶点内存,然后遍历每一个文本对象,将单个文本对象的顶点数据写入到顶点内存中;2)创建一块索引内存,然后遍历每一个文本对象,将单个文本对象的索引值写入到索引内存中,同时修改索值,将当前索引值加上已写入的顶点总数。2CN109215103A说明书1/3页一种基于OSG的大批量文字渲染方法技术领域[0001]本发明属于地理信息系统技术领域,特别涉及一种基于OSG的大批量文字渲染方法。背景技术[0002]在地理信息系统(简称GIS)行业中,海量数据一直是地理数据的一个显著特征,无论是栅格矢量数据还是模型业务数据,都能轻松达到TB级,为了直观和便捷的查看这些庞大的数据,三维可视化技术发展迅速,而OpenSceneGraph(简称OSG)作为一款开源高效的三维引擎也受到了越来越广泛的应用。在三维场景中为了对所展示数据进行注释和说明,文字的使用已经成倍增加。例如我们经常加载的全国甚至全球的各级地名数据,从国家首都到各省省会,从各级地市再到村庄乡镇,文字的用量巨大,这给图形渲染带来了巨大的压力。以陕西省为例,其下大约有1768个乡镇,如果每个乡镇名都实时渲染的话,系统的渲染帧率会急速下降,导致卡顿甚至卡死。通常的硬件环境,按照常规的文字渲染方式,能够承受的文字渲染量大概在1000左右(具体由机器性能而定),而实际的需求远大于此。[0003]为了解决常规文字渲染效率低下与其巨大需求间的矛盾,通常的解决方案是利用LevelsofDetail(简称LOD)的思想,即在不同的级别显示不同的地名,例如在太空中俯瞰地球时,我们可以只显示各国首都的地名,在视点的距离拉近时,首都的地名消失,省会的地名出现,最终显示乡镇的地名,同时结合视域裁剪技术,将视域以外的地名进行裁剪,从而在控制同屏文字数量上限的同时,又能通过视点的移动查看到所有的地名信息。这种方案虽然能在一定程度上解决问题,但在本质上,它只是一种调度方案,它并没有从根本上提升文字的渲染效率,并且这种调度,在某些情况可以使用,但在另外一些场景可能就不能满足需求,比如在某些目标监测系统中,文字负责显示每一个目标的当前状态,