CN114596389A - 基于OpenGL实例化技术的大批量文字标牌绘制方法 - Google Patents

基于OpenGL实例化技术的大批量文字标牌绘制方法 Download PDF

Info

Publication number
CN114596389A
CN114596389A CN202210501022.0A CN202210501022A CN114596389A CN 114596389 A CN114596389 A CN 114596389A CN 202210501022 A CN202210501022 A CN 202210501022A CN 114596389 A CN114596389 A CN 114596389A
Authority
CN
China
Prior art keywords
character
label
sequence
buffer array
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210501022.0A
Other languages
English (en)
Other versions
CN114596389B (zh
Inventor
刘立国
王永生
夏兵
郭勇
樊诚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Naval University of Engineering PLA
Original Assignee
Naval University of Engineering PLA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Naval University of Engineering PLA filed Critical Naval University of Engineering PLA
Priority to CN202210501022.0A priority Critical patent/CN114596389B/zh
Publication of CN114596389A publication Critical patent/CN114596389A/zh
Application granted granted Critical
Publication of CN114596389B publication Critical patent/CN114596389B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/216Parsing using statistical methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

本发明公开了一种基于OpenGL实例化技术的大批量文字标牌绘制方法。该方法包括步骤如下:在显卡内存中分配字符缓冲数组;将待绘制的文字标牌分为创建型文字标牌、更新型文字标牌、删除型文字标牌;分别生成创建型字符集、更新前原字符集、更新后新字符集、删除型字符集;分别构建创建型字符指令集、更新型字符指令集、删除型字符指令集;将依次按照“删除”、“增加”的顺序执行指令;调用OpenGL实例化渲染函数,使用GPU渲染每个字符,即完成文字标牌的绘制。本发明将文字标牌绘制转换为字符增加或删除,从而减少了绘制工作量;另一方面在计算机显卡内存中,建立以字符编码为唯一键值的字符缓冲数组,实现大批量文字标牌的快速绘制。

Description

基于OpenGL实例化技术的大批量文字标牌绘制方法
技术领域
本发明涉及航海信息技术领域,具体地指一种基于OpenGL实例化技术的大批量文字标牌绘制方法。
背景技术
在航海领域信息系统中,目标标牌能够展示目标的型号、国籍、航行信息等关键信息,是船舶信息系统中必不可少的部分。当前我国各类舰艇、船舶,以及全球300总吨以上国际航行船舶数量总数已超过100万艘,海上活动船只数量40至50万艘,因此为支撑航海领域信息系统流畅运行、为用户提供优秀的体验,需要研发高效的标牌绘制方法。
目前采用二维矢量文字绘制引擎(如AGG、Qt等)对大批量标牌进行绘制,但是受限于CPU性能难以满足日益增长的数据展示需求,因此,二维矢量文字绘制引擎绘制效率较低;另外,利用GPU强大渲染性能对二维场景标牌进行渲染,但是在实际的测试中发现,由于CPU-GPU数据传输瓶颈,传统OpenGL(Open Graphics Library,用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口)文字渲染方法依然无法解决大量文字标牌绘制性能问题。
发明内容
本发明的目的就是要克服上述现有技术的不足,提供一种基于OpenGL实例化技术的大批量文字标牌绘制方法,将文字标牌绘制转换为字符增加或删除,从而减少了绘制工作量;同时在计算机显卡内存中,对文字标牌中涉及到的所有字符建立以字符编码为唯一键值的字符缓冲数组,通过对字符缓冲数组中的屏幕坐标数值发出相应的“增加”、或“删除”指令,使该屏幕坐标位置对应的字符实现“增加”、或“删除”,从而实现大批量文字标牌的快速绘制。
为实现上述目的,本发明所设计的一种基于OpenGL实例化技术的大批量文字标牌绘制方法,其特别之处在于,包括如下步骤:
步骤1),在显卡内存中,将所有文字标牌中涉及到的每个字符分配相应的字符缓冲数组,每个所述字符缓冲数组均包括唯一键值的字符编码、字符描述信息、与该字符的N个屏幕坐标位置相对应的N个屏幕坐标数值,且N个所述屏幕坐标数值按照被赋予的不同坐标索引排序;
步骤2),将待绘制的文字标牌分为三类,分别为创建型文字标牌、更新型文字标牌、删除型文字标牌;
步骤3),对于创建型文字标牌,对待创建的文字标牌中涉及到的每个字符指明其在创建型文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成创建型字符集;
对于更新型文字标牌,对更新前原文字标牌内容涉及到的每个字符指明其在更新前原文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成更新前原字符集;对更新后新文字标牌内容涉及到的每个字符指明其在更新后新文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成更新后新字符集;
对于删除型文字标牌,对待删除的文字标牌内容涉及到的每个字符指明其在删除型文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成删除型字符集;
步骤4),对于创建型文字标牌,根据创建型字符集中的字符对应的字符编码,在每个标牌内部顺序排序位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“增加”指令,构建成创建型字符指令集;
对于更新型文字标牌,将更新前原字符集与更新后新字符集按照字符、标牌内部顺序排序逐个比较,根据比较结果,在不同的字符、标牌内部顺序排序对应的位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发送“增加”、或“删除”指令,构建成更新型字符指令集;
对于删除型文字标牌,根据删除型字符集中的每个字符对应的字符编码,在每个标牌内部顺序排序位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“删除”指令,构建成删除型字符指令集;
步骤5),将创建型字符指令集、更新型字符指令集、删除型字符指令集中的每个标牌内部顺序排序位置处对应的屏幕坐标数值依次按照“删除”、“增加”的顺序执行指令,则与屏幕坐标数值对应的屏幕坐标位置处的字符实现 “删除”、或“增加”;
步骤6),根据创建型字符指令集、更新型字符指令集、删除型字符指令集中的每个字符对应的字符描述信息,调用OpenGL实例化渲染函数,使用GPU渲染每个字符,即完成创建型文字标牌、或更新型文字标牌、或删除型文字标牌的绘制,得到屏幕显示;
对每个文字标牌执行步骤2)~步骤6),即可完成大批量文字标牌的绘制。
本发明的优点在于:
1.本发明将文字标牌分为创建型文字标牌、更新型文字标牌、删除型文字标牌,其中,由创建型文字标牌得到创建型字符集,并对创建型字符集中的每个字符执行“增加”指令;把更新型文字标牌在更新前、后进行比对,忽略不更新字符,得到待更新字符,并对待更新字符执行“增加”、或“删除”指令;由删除型文字标牌得到删除型字符集,并对删除型字符集中的每个字符执行“删除”指令;从而将标牌绘制转换为字符增加或删除,减少了标牌绘制的工作量;
2.本发明对文字标牌中涉及到的所有字符建立以字符编码为唯一键值的字符缓冲数组,将字符缓冲数组中设立的、与该字符出现位置相对应的N个屏幕坐标数值按照被赋予的不同坐标索引进行排序,通过坐标索引获取该坐标索引对应的屏幕坐标数值,并对该屏幕坐标数值发出相应的“增加”、或“删除”指令,使该屏幕坐标位置对应的字符实现“增加”、或“删除”,从而实现大批量文字标牌的快速绘制。
本发明提出了一种基于OpenGL实例化技术的大批量文字标牌绘制方法,一方面将文字标牌绘制转换为字符增加或删除,从而减少了绘制工作量;另一方面在计算机显卡内存中,建立以字符编码为唯一键值的字符缓冲数组,实现大批量文字标牌的快速绘制,相比传统矢量文本绘制方法,本发明的绘制方法提高了10倍以上。
附图说明
图1为本发明基于OpenGL实例化技术的大批量文字标牌绘制方法的流程图;
图2为本发明中的创建型文字标牌的创建型字符集、创建型字符指令集的构建示意图;
图3为本发明中的更新型文字标牌的更新前原字符集、更新后新字符集、以及更新型字符指令集的构建示意图;
图4为本发明在执行指令的过程中字符缓冲数组容量的扩展方法;
图5为本发明在执行删除指令的操作方法示意图。
具体实施方式
以下结合附图和具体实施例对本发明作进一步的详细描述,但该实施例不应该理解为对本发明的限制。
如图1所示,本发明基于OpenGL实例化技术的大批量文字标牌绘制方法,包括如下步骤:
步骤1),在显卡内存中,将所有文字标牌中涉及到的每个字符分配相应的字符缓冲数组,每个所述字符缓冲数组均包括唯一键值的字符编码、字符描述信息(所述字符描述信息包括字符颜色、字符大小、字符字体)、与该字符的N个屏幕坐标位置相对应的N个屏幕坐标数值,且N个所述屏幕坐标数值按照被赋予的不同坐标索引排序;
步骤2),将待绘制的文字标牌分为三类,分别为创建型文字标牌、更新型文字标牌、删除型文字标牌;
步骤3),对于创建型文字标牌,将待创建的文字标牌内容涉及到的每个字符按照字符编码顺序依次排序,并对依次排序后的每个字符指明其在创建型文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,从而生成创建型字符集;
所述创建型字符集包括按照字符编码顺序依次排序的字符、每个字符在对应文字标牌中的字符出现次数排序,以及与字符次数排序相对应的标牌内部顺序排序,具体如图2所示。图2中的文字标牌内容“14:45:20”,其涉及到的字符为 “1”、“4”、“:”、“5”、“2”、“0”。在创建型字符集中,按照字符编码顺序依次排序的字符为“:”、“0”、“1”、“2”、“4”、“5”。其中,字符“:”包括字符出现次数排序0和字符出现次数排序1,字符出现次数排序0对应标牌内部顺序排序2,字符出现次数排序1对应标牌内部顺序排序5;字符“4”包括字符出现次数排序0和字符出现次数排序1,字符出现次数排序0对应标牌内部顺序排序1,字符出现次数排序1对应标牌内部顺序排序3。
对于更新型文字标牌,将更新前原文字标牌内容涉及到的每个字符按照字符编码顺序依次排序,并对依次排序后的每个字符指明其在更新前原文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,从而生成更新前原字符集;将更新后新文字标牌内容涉及到的每个字符按照字符编码顺序依次排序,并对依次排序后的每个字符指明其在更新后新文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,从而生成更新后新字符集。
所述更新前原字符集包括按照字符编码顺序依次排序的字符、每个字符在对应文字标牌中的字符出现次数排序,以及与字符出现次数排序相对应的标牌内部顺序排序。所述更新后新字符集包括按照字符编码顺序依次排序的字符、每个字符在对应文字标牌中的字符出现次数排序,以及与字符出现次数排序相对应的标牌内部顺序排序。具体如图3所示。图3中的文字标牌内容由“14:45:20”变为“14:52:23”,更新前原字符集涉及到的字符为“1”、“4”、“:”、“5”、“2”、“0”。按照字符编码顺序依次排序的字符为“:”、“0”、“1”、“2”、“4”、“5”。更新后新字符集涉及到的字符为 “1”、“4”、“:”、“5”、“2”、“3”。按照字符编码顺序依次排序的字符为“:”、“0”、“1”、“2”、“3”、“4”、“5”。
对于删除型文字标牌,将待删除的文字标牌内容涉及到的每个字符按照字符编码顺序依次排序,并对依次排序后的每个字符指明其在删除型文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,从而生成删除型字符集。
所述删除型字符集包括按照字符编码顺序依次排序的字符、每个字符在对应文字标牌中的字符出现次数排序,以及与字符次数排序相对应的标牌内部顺序排序。
步骤4),对于创建型文字标牌,根据创建型字符集中的字符对应的字符编码,在每个标牌内部顺序排序位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“增加”指令;将发出“增加”指令的所有屏幕坐标数值、及对应的“增加”指令按照创建型字符集中依次排序后的字符对应的标牌内部顺序排序进行收集,构建成创建型字符指令集,如图2所示。
对于更新型文字标牌,将更新前原字符集与更新后新字符集按照字符、标牌内部顺序排序逐个比较,若更新前原字符集中的字符、标牌内部顺序排序与更新后新字符集中的字符、标牌内部顺序排序一致,则不发出指令。如图3所示,更新前原字符集中的字符“:”及“:”对应的标牌内部顺序排序与更新后新字符集一致,则不发出指令。
若更新前原字符集中的字符、标牌内部顺序排序在更新后新字符集中不存在,则根据该字符对应的字符编码确定该标牌内部顺序排序对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“删除”指令。如图3所示,更新前原字符集中的字符“0”及“0” 对应的标牌内部顺序排序7,在更新后新字符集中不存在,则发出“删除”指令。
若更新后新字符集中的字符、标牌内部顺序排序在更新前原字符集中不存在,则根据该字符对应的字符编码确定该标牌内部顺序排序对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“增加”指令。如图3所示,更新后新字符集中的字符“2”及“2” 对应的标牌内部顺序排序4在更新前原字符集中不存在,则发出“增加”指令。
将发出“增加”、或“删除”指令的所有屏幕坐标数值、及对应的“增加”、或“删除”指令按照依次排序后的字符对应的标牌内部顺序排序进行收集,构建成更新型字符指令集,如图3所示。
对于删除型文字标牌,根据删除型字符集中的每个字符对应的字符编码,在每个标牌内部顺序排序位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“删除”指令;将发出 “删除”指令的所有屏幕坐标数值、及对应的“删除”指令按照删除型字符集中依次排序后的字符对应的标牌内部顺序排序进行收集,构建成删除型字符指令集。
步骤5),将创建型字符指令集、更新型字符指令集、删除型字符指令集中的每个标牌内部顺序排序位置处对应的屏幕坐标数值依次按照“删除”、“增加”的顺序执行指令,则与屏幕坐标数值对应的屏幕坐标位置处的字符实现 “删除”、或“增加”。
将创建型字符指令集、更新型字符指令集、删除型字符指令集中的每个字符对应的所有屏幕坐标数值依次按照“删除”、“增加”的顺序执行指令,目的在于:通过最先执行“删除”命令,删除字符缓冲数组中的字符,以便于减少“增加”命令潜在的字符缓冲数组扩展操作,提高绘制效率。
优选地,如图4所示,对每个标牌内部顺序排序位置处对应的屏幕坐标数值依次按照“删除”、“增加”的顺序执行指令的过程中,若该字符对应的字符缓冲数组容量不足,则重新构建字符缓冲数组,且重新构建的字符缓冲数组容量为原先的1.25倍。
优选地,如图5所示,对每个标牌内部顺序排序位置处对应的屏幕坐标数值依次按照“删除”、“增加”的顺序执行指令的过程中,若执行“删除”指令,则将该字符缓冲数组末尾的屏幕坐标数值替换被删除的屏幕坐标数值,并将该字符缓冲数组长度减一。
步骤6),根据创建型字符指令集、更新型字符指令集、删除型字符指令集中的每个字符对应的字符描述信息(所述字符描述信息包括字符颜色、字符大小、字符字体),调用OpenGL实例化渲染函数,使用GPU渲染每个字符,即完成创建型文字标牌、或更新型文字标牌、或删除型文字标牌的绘制,得到屏幕显示。
对每个文字标牌执行步骤2)~步骤6),即可完成大批量文字标牌的绘制。
基于上述方法,本发明提出一种基于OpenGL实例化技术的大批量文字标牌绘制系统,其包括字符缓冲数组模块(1)、文字标牌分类模块(2)、字符集生成模块(3)、字符指令集生成模块(4)、指令执行模块(5)、字符渲染模块(6);其中,
字符缓冲数组模块(1)用于在显卡内存中,将所有文字标牌中涉及到的每个字符分配相应的字符缓冲数组,每个所述字符缓冲数组均包括唯一键值的字符编码、字符描述信息、与该字符的N个屏幕坐标位置相对应的N个屏幕坐标数值,且N个所述屏幕坐标数值按照被赋予的不同坐标索引排序;
文字标牌分类模块(2)用于将待绘制的文字标牌分为创建型文字标牌、更新型文字标牌、删除型文字标牌;
字符集生成模块(3)用于将创建型文字标牌中涉及到的每个字符指明其在创建型文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成创建型字符集;
将更新前原文字标牌内容涉及到的每个字符指明其在更新前原文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成更新前原字符集;
将更新后新文字标牌内容涉及到的每个字符指明其在更新后新文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成更新后新字符集;
将删除型文字标牌内容涉及到的每个字符指明其在删除型文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成删除型字符集;
字符指令集生成模块(4)用于根据创建型字符集中的字符对应的字符编码,在每个标牌内部顺序排序位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“增加”指令,构建成创建型字符指令集;
根据更新前原字符集与更新后新字符集按照字符、标牌内部顺序排序逐个比较结果,在不同的字符、标牌内部顺序排序对应的位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发送“增加”、或“删除”指令,构建成更新型字符指令集;
根据删除型字符集中的每个字符对应的字符编码,在每个标牌内部顺序排序位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“删除”指令,构建成删除型字符指令集;
指令执行模块(5)用于将创建型字符指令集、更新型字符指令集、删除型字符指令集中的每个标牌内部顺序排序位置处对应的屏幕坐标数值依次按照“删除”、“增加”的顺序执行指令;
字符渲染模块(6)用于根据创建型字符指令集、更新型字符指令集、删除型字符指令集中的每个字符对应的字符描述信息,调用OpenGL实例化渲染函数,使用GPU渲染每个字符,完成创建型文字标牌、或更新型文字标牌、或删除型文字标牌的绘制。
最后需要说明的是,以上具体实施方式仅用以说明本专利技术方案而非限制,本领域的普通技术人员应当理解,可以对本专利的技术方案进行修改或者等同替换,而不脱离本专利技术方案的精神和范围,其均应涵盖在本专利的权利要求范围当中。

Claims (10)

1.一种基于OpenGL实例化技术的大批量文字标牌绘制方法,其特征在于,所述方法包括如下步骤:
步骤1),在显卡内存中,将所有文字标牌中涉及到的每个字符分配相应的字符缓冲数组,每个所述字符缓冲数组均包括唯一键值的字符编码、字符描述信息、与该字符的N个屏幕坐标位置相对应的N个屏幕坐标数值,且N个所述屏幕坐标数值按照被赋予的不同坐标索引排序;
步骤2),将待绘制的文字标牌分为三类,分别为创建型文字标牌、更新型文字标牌、删除型文字标牌;
步骤3),对于创建型文字标牌,对待创建的文字标牌中涉及到的每个字符指明其在创建型文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成创建型字符集;
对于更新型文字标牌,对更新前原文字标牌内容涉及到的每个字符指明其在更新前原文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成更新前原字符集;对更新后新文字标牌内容涉及到的每个字符指明其在更新后新文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成更新后新字符集;
对于删除型文字标牌,对待删除的文字标牌内容涉及到的每个字符指明其在删除型文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成删除型字符集;
步骤4),对于创建型文字标牌,根据创建型字符集中的字符对应的字符编码,在每个标牌内部顺序排序位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“增加”指令,构建成创建型字符指令集;
对于更新型文字标牌,将更新前原字符集与更新后新字符集按照字符、标牌内部顺序排序逐个比较,根据比较结果,在不同的字符、标牌内部顺序排序对应的位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发送“增加”、或“删除”指令,构建成更新型字符指令集;
对于删除型文字标牌,根据删除型字符集中的每个字符对应的字符编码,在每个标牌内部顺序排序位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“删除”指令,构建成删除型字符指令集;
步骤5),将创建型字符指令集、更新型字符指令集、删除型字符指令集中的每个标牌内部顺序排序位置处对应的屏幕坐标数值依次按照“删除”、“增加”的顺序执行指令,则与屏幕坐标数值对应的屏幕坐标位置处的字符实现 “删除”、或“增加”;
步骤6),根据创建型字符指令集、更新型字符指令集、删除型字符指令集中的每个字符对应的字符描述信息,调用OpenGL实例化渲染函数,使用GPU渲染每个字符,即完成创建型文字标牌、或更新型文字标牌、或删除型文字标牌的绘制,得到屏幕显示;
对每个文字标牌执行步骤2)~步骤6),即可完成大批量文字标牌的绘制。
2.根据权利要求1所述的基于OpenGL实例化技术的大批量文字标牌绘制方法,其特征在于:步骤3)中,
对于创建型字符集,将每个字符按照字符编码顺序依次排序,并对依次排序后的每个字符指明其在创建型文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序;
对于更新前原字符集,将每个字符按照字符编码顺序依次排序,并对依次排序后的每个字符指明其在更新前原文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序;
对于更新后新字符集,将每个字符按照字符编码顺序依次排序,并对依次排序后的每个字符指明其在更新后新文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序;
对于删除型字符集,将每个字符按照字符编码顺序依次排序,并对依次排序后的每个字符指明其在删除型文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序。
3.根据权利要求2所述的基于OpenGL实例化技术的大批量文字标牌绘制方法,其特征在于:步骤4)中,对于更新型文字标牌,将更新前原字符集与更新后新字符集按照字符、标牌内部顺序排序逐个比较的方式为,
若更新前原字符集中的字符、标牌内部顺序排序与更新后新字符集中的字符、标牌内部顺序排序一致,则不发出指令;
若更新前原字符集中的字符、标牌内部顺序排序在更新后新字符集中不存在,则根据该字符对应的字符编码,在该标牌内部顺序排序位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“删除”指令;
若更新后新字符集中的字符、标牌内部顺序排序在更新前原字符集中不存在,则根据该字符对应的字符编码,在该标牌内部顺序排序位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“增加”指令。
4.根据权利要求3所述的基于OpenGL实例化技术的大批量文字标牌绘制方法,其特征在于:步骤4)中,
对于创建型字符指令集,将发出“增加”指令的所有屏幕坐标数值、及对应的“增加”指令按照创建型字符集中依次排序后的字符对应的标牌内部顺序排序进行收集;
对于更新型字符指令集,将发出“增加”、或“删除”指令的所有屏幕坐标数值、及对应的“增加”、或“删除”指令按照依次排序后的字符对应的标牌内部顺序排序进行收集;
对于删除型字符指令集,将发出 “删除”指令的所有屏幕坐标数值、及对应的“删除”指令按照删除型字符集中依次排序后的字符对应的标牌内部顺序排序进行收集。
5.根据权利要求4所述的基于OpenGL实例化技术的大批量文字标牌绘制方法,其特征在于:步骤5)中,对每个标牌内部顺序排序位置处对应的屏幕坐标数值依次按照“删除”、“增加”的顺序执行指令的过程中,若该字符对应的字符缓冲数组容量不足,则重新构建字符缓冲数组,且重新构建的字符缓冲数组容量为原先的1.25倍。
6.根据权利要求4所述的基于OpenGL实例化技术的大批量文字标牌绘制方法,其特征在于:步骤5)中,对每个标牌内部顺序排序位置处对应的屏幕坐标数值依次按照“删除”、“增加”的顺序执行指令的过程中,若执行“删除”指令,则将该字符缓冲数组末尾的屏幕坐标数值替换被删除的屏幕坐标数值,并将该字符缓冲数组长度减一。
7.根据权利要求1所述的基于OpenGL实例化技术的大批量文字标牌绘制方法,其特征在于:步骤1)中,所述字符描述信息包括字符颜色、字符大小、字符字体。
8.一种基于OpenGL实例化技术的大批量文字标牌绘制系统,其特征在于:包括字符缓冲数组模块(1)、文字标牌分类模块(2)、字符集生成模块(3)、字符指令集生成模块(4)、指令执行模块(5)、字符渲染模块(6);其中,
字符缓冲数组模块(1)用于在显卡内存中,将所有文字标牌中涉及到的每个字符分配相应的字符缓冲数组,每个所述字符缓冲数组均包括唯一键值的字符编码、字符描述信息、与该字符的N个屏幕坐标位置相对应的N个屏幕坐标数值,且N个所述屏幕坐标数值按照被赋予的不同坐标索引排序;
文字标牌分类模块(2)用于将待绘制的文字标牌分为创建型文字标牌、更新型文字标牌、删除型文字标牌;
字符集生成模块(3)用于将创建型文字标牌中涉及到的每个字符指明其在创建型文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成创建型字符集;
将更新前原文字标牌内容涉及到的每个字符指明其在更新前原文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成更新前原字符集;
将更新后新文字标牌内容涉及到的每个字符指明其在更新后新文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成更新后新字符集;
将删除型文字标牌内容涉及到的每个字符指明其在删除型文字标牌中的字符出现次数排序和与该字符出现次数排序相对应的标牌内部顺序排序,构成删除型字符集;
字符指令集生成模块(4)用于根据创建型字符集中的字符对应的字符编码,在每个标牌内部顺序排序位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“增加”指令,构建成创建型字符指令集;
根据更新前原字符集与更新后新字符集按照字符、标牌内部顺序排序逐个比较结果,在不同的字符、标牌内部顺序排序对应的位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发送“增加”、或“删除”指令,构建成更新型字符指令集;
根据删除型字符集中的每个字符对应的字符编码,在每个标牌内部顺序排序位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“删除”指令,构建成删除型字符指令集;
指令执行模块(5)用于将创建型字符指令集、更新型字符指令集、删除型字符指令集中的每个标牌内部顺序排序位置处对应的屏幕坐标数值依次按照“删除”、“增加”的顺序执行指令;
字符渲染模块(6)用于根据创建型字符指令集、更新型字符指令集、删除型字符指令集中的每个字符对应的字符描述信息,调用OpenGL实例化渲染函数,使用GPU渲染每个字符,完成创建型文字标牌、或更新型文字标牌、或删除型文字标牌的绘制。
9.根据权利要求8所述的基于OpenGL实例化技术的大批量文字标牌绘制系统,其特征在于:字符指令集生成模块(4)中,更新前原字符集与更新后新字符集按照字符、标牌内部顺序排序逐个比较的方式为,
若更新前原字符集中的字符、标牌内部顺序排序与更新后新字符集中的字符、标牌内部顺序排序一致,则不发出指令;
若更新前原字符集中的字符、标牌内部顺序排序在更新后新字符集中不存在,则根据该字符对应的字符编码,在该标牌内部顺序排序位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“删除”指令;
若更新后新字符集中的字符、标牌内部顺序排序在更新前原字符集中不存在,则根据该字符对应的字符编码,在该标牌内部顺序排序位置处确定其对应的字符缓冲数组,并针对该字符缓冲数组中排序的某个坐标索引,获取该坐标索引对应的屏幕坐标数值,并发出“增加”指令。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法。
CN202210501022.0A 2022-05-10 2022-05-10 基于OpenGL实例化技术的大批量文字标牌绘制方法 Active CN114596389B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210501022.0A CN114596389B (zh) 2022-05-10 2022-05-10 基于OpenGL实例化技术的大批量文字标牌绘制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210501022.0A CN114596389B (zh) 2022-05-10 2022-05-10 基于OpenGL实例化技术的大批量文字标牌绘制方法

Publications (2)

Publication Number Publication Date
CN114596389A true CN114596389A (zh) 2022-06-07
CN114596389B CN114596389B (zh) 2022-07-08

Family

ID=81811680

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210501022.0A Active CN114596389B (zh) 2022-05-10 2022-05-10 基于OpenGL实例化技术的大批量文字标牌绘制方法

Country Status (1)

Country Link
CN (1) CN114596389B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9147275B1 (en) * 2012-11-19 2015-09-29 A9.Com, Inc. Approaches to text editing
US20160062954A1 (en) * 2012-09-15 2016-03-03 Numbergun Llc Flexible high-speed generation and formatting of application-specified strings
CN106294291A (zh) * 2016-07-20 2017-01-04 中国航空无线电电子研究所 一种TrueType字体渲染方法
JP2017116859A (ja) * 2015-12-25 2017-06-29 キヤノン株式会社 文字描画装置および文字描画方法、コンピュータプログラム
CN108287809A (zh) * 2017-12-13 2018-07-17 苏州长风航空电子有限公司 一种基于vxWorks系统的矢量字体显示优化方法
CN109308734A (zh) * 2017-07-27 2019-02-05 腾讯科技(深圳)有限公司 3d文字的生成方法及其装置、设备、存储介质
US20200004759A1 (en) * 2017-06-05 2020-01-02 Umajin Inc. Generative content system and methods therefor
CN112966318A (zh) * 2021-04-12 2021-06-15 青矩技术股份有限公司 一种显示cad文件中字符的方法及终端设备
US20210312680A1 (en) * 2019-05-06 2021-10-07 Tencent Technology (Shenzhen) Company Limited Element rendering method and appartus, computer readable storage medium, and computer device

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160062954A1 (en) * 2012-09-15 2016-03-03 Numbergun Llc Flexible high-speed generation and formatting of application-specified strings
US9147275B1 (en) * 2012-11-19 2015-09-29 A9.Com, Inc. Approaches to text editing
JP2017116859A (ja) * 2015-12-25 2017-06-29 キヤノン株式会社 文字描画装置および文字描画方法、コンピュータプログラム
CN106294291A (zh) * 2016-07-20 2017-01-04 中国航空无线电电子研究所 一种TrueType字体渲染方法
US20200004759A1 (en) * 2017-06-05 2020-01-02 Umajin Inc. Generative content system and methods therefor
CN109308734A (zh) * 2017-07-27 2019-02-05 腾讯科技(深圳)有限公司 3d文字的生成方法及其装置、设备、存储介质
CN108287809A (zh) * 2017-12-13 2018-07-17 苏州长风航空电子有限公司 一种基于vxWorks系统的矢量字体显示优化方法
US20210312680A1 (en) * 2019-05-06 2021-10-07 Tencent Technology (Shenzhen) Company Limited Element rendering method and appartus, computer readable storage medium, and computer device
CN112966318A (zh) * 2021-04-12 2021-06-15 青矩技术股份有限公司 一种显示cad文件中字符的方法及终端设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈飞等: "高速绘制中文字的输入方法的设计与实现", 《计算机工程与应用》 *

Also Published As

Publication number Publication date
CN114596389B (zh) 2022-07-08

Similar Documents

Publication Publication Date Title
US5434957A (en) Method and apparatus for generating a color palette
US5157765A (en) Method and apparatus for pipelined parallel rasterization
JP4564718B2 (ja) 3−dコンピュータ・グラフィックス・レンダリングシステム
CN102222314B (zh) 用并行处理从源位图标识并提取模式来加速位图远程发送
CN110489692B (zh) 一种基于WebGL实例化技术构件级操作的实现方法及系统
US20070171222A1 (en) Application-independent method for capturing three-dimensional model data and structure for viewing and manipulation
CN110544291B (zh) 一种图像渲染方法及装置
JP2022536233A (ja) 動画データ符号化/復号方法、装置、プログラム及びコンピュータ装置
CN114116635A (zh) 压缩数据流的并行解压缩
CA2028701C (en) Method and apparatus for pipelined parallel rasterization
CN104111913A (zh) 一种流式文档的处理方法及装置
CN109634611B (zh) 基于OpenGL的移动端三维模型ply文件解析与展示方法
CN114596389B (zh) 基于OpenGL实例化技术的大批量文字标牌绘制方法
CN1386247A (zh) 动画图形图象的产生及编码
EP3913533A2 (en) Method and apparatus of processing image device and medium
US9412187B2 (en) Delayed rendering of content
CN112612427B (zh) 一种车辆停靠点数据处理方法、装置、存储介质及终端
CN114463400A (zh) 一种基于纹理对象分割的纹理采样方法与系统
CN101847050A (zh) 一种嵌入式产品中简单中文的输入及显示方法
US8270742B1 (en) Data compression for computer-aided design systems
CN101986710B (zh) 一种基于sort-last体系结构的并行绘制系统
EP0646887B1 (en) Method and system for managing character recognition of a plurality of document form images having common data types
CN114387367B (zh) 雷达航迹显示方法、装置
CN1242366C (zh) 电脑绘图系统中交点快取单元、剪辑引擎和修剪图元的方法
Liu et al. Performance Optimization Scheme of Vehicle-Mounted Computing Platform Based on OpenGL

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant