CN107221020A - 一种文字纹理绘制方法及装置 - Google Patents
一种文字纹理绘制方法及装置 Download PDFInfo
- Publication number
- CN107221020A CN107221020A CN201710391897.9A CN201710391897A CN107221020A CN 107221020 A CN107221020 A CN 107221020A CN 201710391897 A CN201710391897 A CN 201710391897A CN 107221020 A CN107221020 A CN 107221020A
- Authority
- CN
- China
- Prior art keywords
- word
- mentioned
- font
- buffer area
- document
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/80—Creating or modifying a manually drawn or painted image using a manual input device, e.g. mouse, light pen, direction keys on keyboard
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本发明提供了一种文字纹理绘制方法及装置,涉及文字显示技术领域。该方法包括,获取文档和上述文档中文字的顶点信息;上述顶点信息包含上述文字的字形、坐标和颜色;上述文字的字形包含上述文字的字体和字号;分别针对上述文档中各文字,选取上述文字为第一文字;从预设纹理缓存中调用与上述第一文字对应的第二文字,并根据上述第一文字的颜色进行渲染,生成第三文字;当各上述第一文字具有对应的上述第三文字后,将各上述第三文字和对应的坐标发送给显存;将上述显存中的各上述第三文字按照对应的坐标排列后,发送给显卡。本发明实施例中,内存与显存无需频繁交互,节省CPU使用率,提高交互效率。
Description
技术领域
本发明涉及文字显示技术领域,特别是涉及一种文字纹理绘制方法及装置。
背景技术
计算机系统中,文字的显示方法为从输入端口(例如,键盘)接收到一个字节的文字后,将该字节的文字保存至输入缓存区,将输入缓存区中的内容传输至内存中,内存将输入的文字发送给显存,使该文字在输出端口(例如,显示屏)显示。
目前,Direct UI技术的流行,可以很方便的构建高效、绚丽的、非常易于扩展的界面。Direct UI意为直接在父窗口上绘图(Paint on parent dc directly)。即子窗口不以窗口句柄的形式创建(windowless),只是逻辑上的窗口,绘制在父窗口之上。好的界面需要好的界面引擎库支持,而界面引擎库可以采用D3D(Direct3D)实现;D3D除了可以做3D界面也可以做2D界面,同时支持硬件加速。
然而,使用D3D绘制文字,通常使用ID3DXFont接口来绘制文字,但是使用ID3DXFont接口绘制文字就需要使用dll(dynamic link library,动态链接库)文件,而dll文件大小超过20M。对于那些安装包不能太大的软件来说,这是很难接受的。同时,由于使用D3D绘制文字时,内存中与显存之间是单字单次;而内存与显存的频繁交互,会使CPU的使用率升高,造成交互效率低。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的文字纹理绘制方法和相应的文字纹理绘制装置。
依据本发明的一个方面,提供了一种文字纹理绘制方法,具体可以包括:
获取文档和所述文档中文字的顶点信息;所述顶点信息包含所述文字的字形、坐标和颜色;所述文字的字形包含所述文字的字体和字号;
分别针对所述文档中各文字,选取所述文字为第一文字;
从预设纹理缓存中调用与所述第一文字对应的第二文字,并根据所述第一文字的颜色进行渲染,生成第三文字;
当各所述第一文字具有对应的所述第三文字后,将各所述第三文字和对应的坐标发送给显存;
将所述显存中的各所述第三文字按照对应的坐标排列后,发送给显卡。
可选地,所述从预设纹理缓存中调用与所述第一文字对应的第二文字,并根据所述第一文字的颜色进行渲染,生成第三文字的步骤,包括:
根据所述第一文字的字形查询到所述预设纹理缓存中的对应的字形缓存区;
在所述对应的字形缓存区中查询到与所述第一文字对应的第二文字并调用,根据所述第一文字的颜色进行渲染,生成所述第三文字。
可选地,所述在所述对应的字形缓存区中查询到与所述第一文字对应的第二文字并调用,根据所述第一文字的颜色进行渲染,生成所述第三文字的步骤,包括:
在所述对应的字形缓存区中查询到与所述第一文字对应的第二文字,将所述第二文字缓存至临时缓存区;
将临时缓存区中的所述第二文字,根据所述第一文字的颜色进行渲染,生成所述第三文字并保存;
将所述临时缓存区中的所述第三文字发送至顶点信息缓存区。
可选地,还包括:
若根据所述第一文字的字形未查询到所述预设纹理缓存中的对应的字形缓存区,则创建对应的字形缓存区。
可选地,还包括:
若根据所述第一文字的字形查询到所述预设纹理缓存中的对应的字形缓存区后,且未在所述字形缓存区中查询到与所述第一文字对应的文字,则在所述字形缓存区中创建与所述第一文字对应的文字。
根据本发明的另一方面,提供了一种文字纹理绘制装置,具体可以包括:
获取文档单元,用于获取文档和所述文档中文字的顶点信息;所述顶点信息包含所述文字的字形、坐标和颜色;所述文字的字形包含所述文字的字体和字号;
第一文字设置单元,用于分别针对所述文档中各文字,选取所述文字为第一文字;
第三文字生成单元,用于从预设纹理缓存中调用与所述第一文字对应的第二文字,并根据所述第一文字的颜色进行渲染,生成第三文字;
文档发送单元,用于当各所述第一文字具有对应的所述第三文字后,将各所述第三文字和对应的坐标发送给显存;
文档设置单元,用于将所述显存中的各所述第三文字按照对应的坐标排列后,发送给显卡。
可选地,所述第三文字生成单元包括:
第一判断子单元,用于根据所述第一文字的字形查询到所述预设纹理缓存中的对应的字形缓存区;
第一渲染子单元,用于在所述对应的字形缓存区中查询到与所述第一文字对应的第二文字并调用,根据所述第一文字的颜色进行渲染,生成所述第三文字。
可选地,所述第一渲染子单元包括:
第二判断子单元,用于在所述对应的字形缓存区中查询到与所述第一文字对应的第二文字,将所述第二文字缓存至临时缓存区;
第二渲染子单元,用于将所述临时缓存区中的所述第二文字,根据所述第一文字的颜色进行渲染,生成所述第三文字并保存;
传输子单元,用于将所述临时缓存区中的所述第三文字发送至所述顶点信息缓存区。
可选地,还包括:
第一创建子单元,用于若根据所述第一文字的字形未查询到所述预设纹理缓存中的对应的字形缓存区,则创建对应的字形缓存区。
可选地,还包括:
第二创建子单元,用于若根据所述第一文字的字形查询到所述预设纹理缓存中的对应的字形缓存区后,且未在所述字形缓存区中查询到与所述第一文字对应的文字,则在所述字形缓存区中创建与所述第一文字对应的文字。
本发明实施例包括以下优点:
根据本发明的一种文字纹理绘制方法及装置通过使用预设纹理缓存存储各文字字形,无需使用ID3DXFont接口来绘制字形,超过20M大小的dll文件无需包含在安装包中;同时,在显存中存储各需要显示的第三文字,使内存与显存无需频繁交互,节省CPU使用率,提高交互效率。
附图说明
通过阅读下文可选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出可选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种文字纹理绘制方法步骤流程图;
图2示出了根据本发明另一个实施例的一种文字纹理绘制方法步骤流程图;
图3示出了根据本发明一个实施例的一种文字纹理绘制装置实施例的结构框图;
图4示出了根据本发明另一个实施例的一种文字纹理绘制装置实施例的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
计算机系统中,文字的显示方法为从输入端口(例如,键盘)接收到一个字节的文字后,将该字节的文字保存至输入缓存区,将输入缓存区中的内容传输至内存中,内存将输入的文字发送给显存,使该文字在输出端口(例如,显示屏)显示。
参照图1,示出了根据本发明一个实施例的一种文字纹理绘制方法实施例的步骤流程图,具体可以包括如下步骤:
步骤S101,获取文档和上述文档中文字的顶点信息;上述顶点信息包含上述文字的字形,坐标和颜色;上述文字的字形包含上述文字的字体和字号。
上述文档中的文字可以是位置关联的,具有一定的规律性;例如,上述文档中第一个文字位于文档中的初始位置,第二个文字位于文档中的初始位置加1的位置,依次类推。
上述文档中的文字也可以是位置之间相互无关,无规律性可言。因此,获取上述文档中的每个文字的坐标,对于将文字从内存经由显存后在显示屏中显示,确保文档中每个文字的位置不会发生变化。
上述文档在输入端口时,用户会根据需要或者喜好设置各文字的字形,颜色信息;为了使在输出端口(显示屏)中,上述文档显示不失真,需要获取上述文档中各文字的字形和颜色。
可选地,获取上述文字的个数,使用第一计数器对上述文档中的文字进行计数。
本申请发明中举例的文档为中文,若为其他语种文档,采用本发明中的方法,均为本申请发明保护范围。
步骤S102,分别针对上述文档中各文字,选取上述文字为第一文字。
选择上述文档中的任意一个文字作为第一文字,根据上述第一文字在内存中构建对应的文字并进行保存,然后选取另一个文字作为第一文字,将该第一文字在内存中构建对应的文字并进行保存,直至上述文档中的所有文字均保存在内存。上述第一文字包含上述文字及上述文字的顶点信息。
例如,上述文档为“专利审查”,选取上述文档中任意一个文字“利”及其顶点信息作为第一文字,根据上述第一文字“利”在内存中构建,并根据其顶点信息进行保存;然后选取另一个文字“专”作为第一文字,根据该第一文字“专”在内存中构建,并进行保存,直至上述文档“专利审查”中的所有文字均已在内存中保存。
可选地,根据上述第一计数器统计的文字个数,监控上述文档中的所有文字已从上述输入缓存区传输至上述内存。
步骤S103,从预设纹理缓存中调用与上述第一文字对应的第二文字,并根据上述第一文字的颜色进行渲染,生成第三文字。
应用系统启动后,申请缓存空间,即预设纹理缓存。例如,可以申请一块内存作为预设纹理缓存。根据上述应用系统的使用,会将使用到的文字在缓存空间中存储。
可选地,上述预设纹理缓存包含纹理缓存管理器类,通过上述纹理缓存管理类来分配、管理预设纹理缓存;通过上述纹理缓存管理器类在上述预设纹理缓存中创建字体缓存容器,用来管理字。例如,在上述应用系统中,第一次使用到:字体为楷体_GB2312的、字号为四号的“专”;则通过上述纹理缓存管理器类创建一个名为“楷体_GB2312+四号”的字体缓存容器,将上述“专”保存至“楷体_GB2312+四号”的字体缓存容器。
例如,上述第一文字为“专”,上述第一文字“专”的顶点信息为:字形为“楷体_GB2312+四号”,颜色为红色,坐标为(100,200)。
根据上述第一文字为“专”及上述第一文字的字形,从上述预设纹理缓存中调出“楷体_GB2312+四号”的“专”字,作为第二文字。上述第二文字不具有上述第一文字中文字的坐标及颜色的信息。
将上述第二文字“专”根据上述第一文字中的顶点信息渲染成红色,生成第三文字。上述第三文字不具有上述第一文字的坐标信息。
步骤S104,当各上述第一文字具有对应的上述第三文字后,将各上述第三文字和对应的坐标发送给显存。
当上述文档中的每个上述第一文字均具有对应的上述第三文字后,即上述文档中的文字均已在内存中保存,将上述第三文字及对应于第三文字的坐标发送给显存。
例如,上述文档中文字“专利申请中专利质量”,根据上述第一计数器统计的文字个数9个,采用第二计数器统计上述第三文字的个数,若上述第三文字的个数也为9个,表示上述文档中每个文字具有对应的第三文字。
因为上述第三文字与上述第一文字对比,上述第三文字不具有上述第一文字的坐标信息;因此,将所有的上述第三文字对应的坐标信息及所有的上述第三文字发送给显存,显存按照上述第三文字对应的坐标信息排列上述第三文字。
步骤S105,将上述显存中的各上述第三文字按照对应的坐标排列后,发送给显卡。
显存获取到各上述第三文字及各上述第三文字的对应坐标后,将上述第三文字的对应坐标进行解析,确定上述第三文字在文档中的位置后,将上述第三文字保存至对应的对应位置,此时,上述文档在内存中还原,将上述文档发送给显卡,使输出接口(显示屏)将上述文档显示出来。
本发明实施例包括以下优点:
根据本发明的一种文字纹理绘制方法及装置通过使用预设纹理缓存存储各文字字形,无需使用ID3DXFont接口来绘制字形,超过20M大小的dll文件无需包含在安装包中;同时,在显存中存储各需要显示的第三文字,使内存与显存无需频繁交互,节省CPU使用率,提高交互效率。
实施例二
参照图2,示出了根据本发明另一个实施例的一种文字纹理绘制方法实施例的步骤流程图,具体可以包括如下步骤:
步骤S201,获取文档和上述文档中文字的顶点信息;上述顶点信息包含上述文字的字形,坐标和颜色;上述文字的字形包含上述文字的字体和字号。
本申请发明中举例的文档为中文,若为其他语种的文档,采用本发明中的方法,均为本申请发明保护范围。
上述文档中的文字可以是位置关联的,具有一定的规律性;例如,上述文档中第一个文字位于文档中的初始位置,第二个文字位于文档初始位置加1的位置,依次类推。
上述文档中的文字也可以是位置之间相互无关,无规律性可言。因此,获取上述文档中的每个文字坐标,对于将文字从内存经由显存后在显示屏中显示,确保文档中每个文字的位置不会发生变化。
上述文档在输入端口时,用户会根据需要或者喜好设置各文字的字形,颜色信息;为了使在输出端口(显示屏)中,上述文档显示不失真,需要获取上述文档中各文字的字形和颜色。
可选地,获取上述文字的个数,使用第一计数器对上述文档中的文字进行计数。
步骤S202,分别针对上述文档中各文字,选取上述文字为第一文字。
选择上述文档中的任意一个文字作为第一文字,根据上述第一文字在内存中构建对应的文字并进行保存,然后选取另一个文字作为第一文字,将该第一文字在内存中构建对应的文字并进行保存,直至上述文档中的所有文字均保存在内存。上述第一文字包含上述文字及上述文字的顶点信息。
例如,上述文档为“专利审查”,选取上述文档中任意一个文字“利”及其顶点信息作为第一文字,根据上述第一文字“利”在内存中构建,并根据其顶点信息进行保存;然后选取另一个文字“专”作为第一文字,根据该第一文字“专”在内存中构建,并进行保存,直至上述文档“专利审查”中的所有文字均已在内存中保存。
可选地,根据上述第一计数器统计的文字个数,监控上述文档中的所有文字已从上述输入缓存区传输至上述内存。
步骤S203,根据上述第一文字的字形查询到上述预设纹理缓存中的对应的字形缓存区。
应用系统启动后,申请缓存空间,即预设纹理缓存。根据上述应用系统的使用,会将使用到的文字在缓存空间中存储。
可选地,上述预设纹理缓存包含纹理缓存管理器类,通过上述纹理缓存管理类来分配、管理预设纹理缓存;通过上述纹理缓存管理器类在上述预设纹理缓存中创建字体缓存容器,用来管理字。
例如,在上述应用系统中,第一次使用到:字体为楷体_GB2312的、字号为四号的“专”;则通过上述纹理缓存管理器类创建一个名为“楷体_GB2312+四号”的字体缓存容器,将上述“专”保存至“楷体_GB2312+四号”的字体缓存容器。
上述第一文字为“专”,上述第一文字“专”的顶点信息为:字形为“楷体_GB2312+四号”,颜色为红色,坐标为(100,200)。根据上述第一文字“专”的字形“楷体_GB2312+四号”查找对应的字形缓存区。
如果在上述预设纹理缓存中查找到对应的字形缓存区,则进入步骤S204;如果在上述预设纹理缓存中未查找到对应的字形缓存区,则表示上述第一文字对应的字形在上述应用系统中第一次用到,则通过纹理缓存管理器类在上述预设纹理缓存中创建字形缓存区。
可选地,通过纹理缓存管理器类在上述预设纹理缓存中创建字形缓存区时,若上述预设纹理缓存的空间已满,或者不足以创建一个新的字形缓存区,则先将上述预设纹理缓存的空间扩大一倍后,再通过纹理缓存管理器类在上述预设纹理缓存中创建字形缓存区。
可选地,创建预设纹理缓存或者将上述预设纹理缓存空间扩大时,可通过基于d3d技术的Create Texture函数进行。
步骤S204,在上述对应的字形缓存区中查询到与上述第一文字对应的第二文字,根据上述第一文字的颜色进行渲染,生成上述第三文字。
从对应的字形缓存区中查询到与上述第一文字对应的文字,调用上述对应的文字为上述第二文字。其中,上述第二文字不具有上述第一文字中文字的坐标及颜色的信息。
可选地,还包括:
若根据上述第一文字的字形未查询到上述预设纹理缓存中的对应的字形缓存区,则创建对应的字形缓存区。
可选地,还包括:
若根据上述第一文字的字形查询到上述预设纹理缓存中的对应的字形缓存区后,且未在上述字形缓存区中查询到与所述第一文字对应的文字,则在上述字形缓存区中创建与所述第一文字对应的文字。
若从对应的字形缓存区中未查询到与上述第一文字对应的文字,则在上述字形缓存区中创建与上述第一文字对应的文字。
若在上述字形缓存区中创建与上述第一文字对应的文字时,上述字形缓存区空间已满,则通过上述纹理缓存管理器类在上述预设纹理缓存中创建新的同类字体缓存容器,在新字体缓存区中创建与上述第一文字对应的文字。上述纹理缓存管理器类记录上述字体缓存区与上述新字体缓存区的存储关系。
例如,上述第一文字是字形为“楷体_GB2312+四号”,颜色为红色,坐标为(100,200)的“专”,从“楷体_GB2312+四号”的字形缓存区中查询“专”字,若查询到,则将所查询到的文字调用出来,成为第二文字。若未查询到,则在“楷体_GB2312+四号”的字形缓存区中创建“专”文字,然后从“楷体_GB2312+四号”的字形缓存区中将“专”调用,作为第二文字;若在“楷体_GB2312+四号”的字形缓存区中创建“专”文字时,上述“楷体_GB2312+四号”的字形缓存区的空间已满,则通过纹理缓存管理器类在预设纹理缓存中创建新的“楷体_GB2312+四号”的字形缓存区。
将上述第二文字根据上述第一文字的颜色设置,生成第三文字。
例如,“楷体_GB2312+四号”的“专”为第二文字,根据第一文字的颜色设置第二文字,即将“楷体_GB2312+四号”的“专”的颜色设置为红色,生成“楷体_GB2312+四号”、红色的“专”文字,即第三文字。
可选地,上述在上述对应的字形缓存区中查询到与上述第一文字对应的第二文字,根据上述第一文字的颜色进行渲染,生成上述第三文字的步骤还包括:在上述对应的字形缓存区中查询到与上述第一文字对应的第二文字,将上述第二文字缓存至临时缓存区;将临时缓存区中的上述第二文字,根据上述第一文字的颜色进行渲染,生成上述第三文字并保存;将上述临时缓存区中的上述第三文字发送至上述顶点信息缓存区。
在应用系统启动后,基于d3d技术,采用Create Vertex Buffer()函数创建顶点信息缓存区;上述顶点信息缓存区为内存。
示例性的,申请6个顶点信息,作为临时缓存区,用于存储第二文字。
选取上述文档中的任一上述第一文字,从上述预设纹理缓存区中调用与上述第一文字对应的第二文字,将上述第二文字缓存至临时缓存区。
根据上述第一文字顶点信息的颜色设置保存在临时缓存区中的上述第二文字,生成第三文字保存在临时缓存区中。此时,第二文字被更新为具有颜色的第三文字。
例如,从预设纹理空间中调用的第二文字为:“楷体_GB2312+四号”的“专”,将该第二文字缓存至申请的临时缓存区中,根据第一文字的颜色设置第二文字,生成“楷体_GB2312+四号”、红色的“专”文字,即第三文字。将该第三文字取代第二文字保存至上述临时缓存区。
上述临时缓存区将上述第三文字发送给上述顶点信息缓存区,上述顶点信息缓存区对上述第三文字进行保存,并使用第二计数器在原数字的基础上加1;或者使用第二计数器在原数字的基础上加6,使用该计数模式时第二计数器在统计使用的顶点信息数目,其中,6个顶点信息表示1个上述第三文字。
上述临时缓存区由6个顶点信息组成,将上述临时缓存区中的第三文字发送给上述顶点信息缓存区,即将6个顶点信息发送给上述顶点信息缓存区,临时缓存区被删除。再次在文档中任意选取上述第一文字,进入步骤S203,直至上述文档中的所有第一文字在上述顶点信息缓存区中有对应的第三文字,进入步骤S205。
步骤S205,当各上述第一文字具有对应的上述第三文字后,将各上述第三文字和对应的坐标发送给显存;
当上述文档中的每个上述第一文字均具有对应的上述第三文字后,即上述文档中的文字均已在内存中保存,将上述第三文字及对应于第三文字的坐标发送给显存。
例如,上述文档中文字“专利申请中专利质量”,根据上述第一计数器统计的文字个数9个,采用第二计数器统计上述第三文字的个数,若上述第三文字的个数也为9个,表示上述文档中每个文字具有对应的第三文字。
因为上述第三文字与上述第一文字对比,上述第三文字不具有上述第一文字的坐标信息;因此,将所有的上述第三文字对应的坐标信息及所有的上述第三文字发送给显存,显存按照上述第三文字对应的坐标信息排列上述第三文字。
步骤S206,将上述显存中的各上述第三文字按照对应的坐标排列后,发送给显卡。
显存获取到各上述第三文字及各上述第三文字的对应坐标后,将上述第三文字的对应坐标进行解析,确定上述第三文字在文档中的位置后,将上述第三文字保存至对应的对应位置,此时,上述文档在内存中还原,将上述文档发送给显卡,使输出接口(显示屏)将上述文档显示出来。
本发明实施例包括以下优点:
根据本发明的一种文字纹理绘制方法及装置通过使用预设纹理缓存存储各文字字形,无需使用ID3DXFont接口来绘制字形,20多M大小的dll文件无需包含在安装包中;同时,在显存中存储各需要显示的第三文字,使内存与显存无需频繁交互,节省CPU使用率,提高交互效率;再者,对预设纹理缓存按照字形缓存区进行区分,提高第二文字查找效率,缩短显示过程的时间;还有,在字形缓存区中创建与第一文字对应的文字,后续使用该文字时直接调用,无需重新绘制,提高显示速度。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作并不一定是本发明实施例所必须的。
实施例三
参照图3,示出了根据本发明一个实施例的一种文字纹理绘制装置实施例的结构框图,具体可以包括如下模块:
获取文档单元301,用于获取文档和上述文档中文字的顶点信息;上述顶点信息包含上述文字的字形,坐标和颜色;上述文字的字形包含上述文字的字体和字号;
第一文字设置单元302,用于分别针对上述文档中各文字,选取上述文字为第一文字;
第三文字生成单元303,用于从预设纹理缓存306中调用与上述第一文字对应的第二文字,并根据上述第一文字的颜色进行渲染,生成第三文字;
文档发送单元304,用于当各上述第一文字具有对应的上述第三文字后,将各上述第三文字和对应的坐标发送给显存;
文档设置单元305,用于将上述显存中的各上述第三文字按照对应的坐标排列后,发送给显卡。
本发明实施例包括以下优点:
根据本发明的一种文字纹理绘制方法及装置通过使用预设纹理缓存存储各文字字形,无需使用ID3DXFont接口来绘制字形,超过20M大小的dll文件无需包含在安装包中;同时,在显存中存储各需要显示的第三文字,使内存与显存无需频繁交互,节省CPU使用率,提高交互效率。
实施例四
参照图4,示出了根据本发明一个实施例的一种文字纹理绘制装置实施例的结构框图,具体可以包括如下模块:
获取文档单元401,用于获取文档和上述文档中文字的顶点信息;上述顶点信息包含上述文字的字形,坐标和颜色;上述文字的字形包含上述文字的字体和字号;
第一文字设置单元402,用于分别针对上述文档中各文字,选取上述文字为第一文字;
第三文字生成单元403,用于从预设纹理406缓存中调用与上述第一文字对应的第二文字,并根据上述第一文字的颜色进行渲染,生成第三文字;
文档发送单元404,用于当各上述第一文字具有对应的上述第三文字后,将各上述第三文字和对应的坐标发送给显存;
文档设置单元405,用于将上述显存中的各上述第三文字按照对应的坐标排列后,发送给显卡。
可选地,上述第三文字生成单元403包括:
第一判断子单元4031,用于根据上述第一文字的字形查询到上述预设纹理缓存中的对应的字形缓存区;
第一渲染子单元4032,用于在上述对应的字形缓存区中查询到与上述第一文字对应的第二文字并调用,根据上述第一文字的颜色进行渲染,生成上述第三文字。
第一文字设置单元402从上述文档中分别选取每个文字为第一文字后;将上述第一文字发送给上述第三文字单元403的第一判断子单元4031,用于根据上述第一文字的字形查询到上述预设纹理缓存中的对应的字形缓存区;第一判断子单元4031确认存在对应的字形缓存区后,上述第三文字单元403的第一渲染子单元4032在上述对应的字形缓存区中查询到与上述第一文字对应的第二文字并调用,根据上述第一文字的颜色进行渲染,生成上述第三文字。
可选地,上述第一渲染子单元4032包括:
第二判断子单元40321,用于在上述对应的字形缓存区中查询到与上述第一文字对应的第二文字,将上述第二文字缓存至临时缓存区;
第二渲染子单元40322,用于将上述临时缓存区中的上述第二文字,根据上述第一文字的颜色进行渲染,生成上述第三文字并保存;
传输子单元40323,用于将上述临时缓存区中的上述第三文字发送至上述顶点信息缓存区。
第一判断子单元4031确认存在对应的字形缓存区后,第一渲染子单元4032的第二判断子单元40321在上述对应的字形缓存区中查询到与上述第一文字对应的第二文字,将上述第二文字缓存至临时缓存区;第二渲染子单元40322将上述临时缓存区中的上述第二文字,根据上述第一文字的颜色进行渲染,生成上述第三文字并保存;经传输子单元40323将上述临时缓存区中的上述第三文字发送至上述顶点信息缓存区。
可选地,上述文字纹理绘制装置还包括:
第一创建单元407,用于若根据上述第一文字的字形未查询到上述预设纹理缓存中的对应的字形缓存区,则创建对应的字形缓存区。
将上述第一文字发送给上述第三文字单元403的第一判断子单元4031,用于根据上述第一文字的字形查询到上述预设纹理缓存中的对应的字形缓存区;若上述第三文字单元403的第一判断子单元4031未查询到对应的字形缓存区,则第一创建单元407根据上述第一文字的字形创建对应的字形缓存区。
可选地,上述文字纹理绘制装置还包括:
第二创建单元408,用于若根据上述第一文字的字形查询到上述预设纹理缓存中的对应的字形缓存区后,且未在上述字形缓存区中查询到与上述第一文字对应的文字,则在上述字形缓存区中创建与上述第一文字对应的文字。
上述第三文字单元403的第一判断子单元4031据上述第一文字的字形查询到对应的字形缓存区后;上述第三文字单元403的第一渲染子单元4032未在上述字形缓存区中查询到与上述第一文字对应的文字,则第二创建单元408在上述字形缓存区中创建与上述第一文字对应的文字。
本发明实施例包括以下优点:
根据本发明的一种文字纹理绘制方法及装置通过使用预设纹理缓存存储各文字字形,无需使用ID3DXFont接口来绘制字形,超过20M大小的dll文件无需包含在安装包中;同时,在显存中存储各需要显示的第三文字,使内存与显存无需频繁交互,节省CPU使用率,提高交互效率;再者,对预设纹理缓存按照字形缓存区进行区分,提高第二文字查找效率,缩短显示过程的时间;还有,在字形缓存区中创建与第一文字对应的文字,后续使用该文字时直接调用,无需重新绘制,提高显示速度。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的文字纹理绘制方法和装置设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种文字纹理绘制方法,其特征在于,包括:
获取文档和所述文档中文字的顶点信息;所述顶点信息包含所述文字的字形、坐标和颜色;所述文字的字形包含所述文字的字体和字号;
分别针对所述文档中各文字,选取所述文字为第一文字;
从预设纹理缓存中调用与所述第一文字对应的第二文字,并根据所述第一文字的颜色进行渲染,生成第三文字;
当各所述第一文字具有对应的所述第三文字后,将各所述第三文字和对应的坐标发送给显存;
将所述显存中的各所述第三文字按照对应的坐标排列后,发送给显卡。
2.根据权利要求1所述的方法,其特征在于,所述从预设纹理缓存中调用与所述第一文字对应的第二文字,并根据所述第一文字的颜色进行渲染,生成第三文字的步骤,包括:
根据所述第一文字的字形查询到所述预设纹理缓存中的对应的字形缓存区;
在所述对应的字形缓存区中查询到与所述第一文字对应的第二文字并调用,根据所述第一文字的颜色进行渲染,生成所述第三文字。
3.根据权利要求2所述的方法,其特征在于,所述在所述对应的字形缓存区中查询到与所述第一文字对应的第二文字并调用,根据所述第一文字的颜色进行渲染,生成所述第三文字的步骤,包括:
在所述对应的字形缓存区中查询到与所述第一文字对应的第二文字,将所述第二文字缓存至临时缓存区;
将临时缓存区中的所述第二文字,根据所述第一文字的颜色进行渲染,生成所述第三文字并保存;
将所述临时缓存区中的所述第三文字发送至顶点信息缓存区。
4.根据权利要求2所述的方法,其特征在于,还包括:
若根据所述第一文字的字形未查询到所述预设纹理缓存中的对应的字形缓存区,则创建对应的字形缓存区。
5.根据权利要求4所述的方法,其特征在于,还包括:
若根据所述第一文字的字形查询到所述预设纹理缓存中的对应的字形缓存区后,且未在所述字形缓存区中查询到与所述第一文字对应的文字,则在所述字形缓存区中创建与所述第一文字对应的文字。
6.一种文字纹理绘制装置,其特征在于,包括:
获取文档单元,用于获取文档和所述文档中文字的顶点信息;所述顶点信息包含所述文字的字形、坐标和颜色;所述文字的字形包含所述文字的字体和字号;
第一文字设置单元,用于分别针对所述文档中各文字,选取所述文字为第一文字;
第三文字生成单元,用于从预设纹理缓存中调用与所述第一文字对应的第二文字,并根据所述第一文字的颜色进行渲染,生成第三文字;
文档发送单元,用于当各所述第一文字具有对应的所述第三文字后,将各所述第三文字和对应的坐标发送给显存;
文档设置单元,用于将所述显存中的各所述第三文字按照对应的坐标排列后,发送给显卡。
7.根据权利要求6所述的装置,其特征在于,所述第三文字生成单元包括:
第一判断子单元,用于根据所述第一文字的字形查询到所述预设纹理缓存中的对应的字形缓存区;
第一渲染子单元,用于在所述对应的字形缓存区中查询到与所述第一文字对应的第二文字并调用,根据所述第一文字的颜色进行渲染,生成所述第三文字。
8.根据权利要求7所述的装置,其特征在于,所述第一渲染子单元包括:
第二判断子单元,用于在所述对应的字形缓存区中查询到与所述第一文字对应的第二文字,将所述第二文字缓存至临时缓存区;
第二渲染子单元,用于将所述临时缓存区中的所述第二文字,根据所述第一文字的颜色进行渲染,生成所述第三文字并保存;
传输子单元,用于将所述临时缓存区中的所述第三文字发送至所述顶点信息缓存区。
9.根据权利要求7所述的装置,其特征在于,还包括:
第一创建子单元,用于若根据所述第一文字的字形未查询到所述预设纹理缓存中的对应的字形缓存区,则创建对应的字形缓存区。
10.根据权利要求9所述的装置,其特征在于,还包括:
第二创建子单元,用于若根据所述第一文字的字形查询到所述预设纹理缓存中的对应的字形缓存区后,且未在所述字形缓存区中查询到与所述第一文字对应的文字,则在所述字形缓存区中创建与所述第一文字对应的文字。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710391897.9A CN107221020B (zh) | 2017-05-27 | 2017-05-27 | 一种文字纹理绘制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710391897.9A CN107221020B (zh) | 2017-05-27 | 2017-05-27 | 一种文字纹理绘制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107221020A true CN107221020A (zh) | 2017-09-29 |
CN107221020B CN107221020B (zh) | 2021-04-16 |
Family
ID=59946873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710391897.9A Active CN107221020B (zh) | 2017-05-27 | 2017-05-27 | 一种文字纹理绘制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107221020B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108986193A (zh) * | 2018-07-10 | 2018-12-11 | 武汉国遥新天地信息技术有限公司 | 一种三维文字描边绘制方法 |
CN109902282A (zh) * | 2019-02-20 | 2019-06-18 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种文字排版方法、装置和存储介质 |
CN110784773A (zh) * | 2019-11-26 | 2020-02-11 | 北京奇艺世纪科技有限公司 | 弹幕生成方法、装置、电子设备及存储介质 |
CN110930490A (zh) * | 2019-10-31 | 2020-03-27 | 北京庚图科技有限公司 | 一种大规模、高动态文字注记快速可视化方法 |
CN111222301A (zh) * | 2020-01-07 | 2020-06-02 | 天津麒麟信息技术有限公司 | 一种3d文字绘制方法、系统、可读存储介质及设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090315892A1 (en) * | 2008-06-18 | 2009-12-24 | Konica Minolta Business Technologies Inc. | Vector image generation method, image processing apparatus, and computer-readable storage medium for computer program |
US20100141659A1 (en) * | 2008-12-09 | 2010-06-10 | Qualcomm Incorporated | Discarding of vertex points during two-dimensional graphics rendering using three-dimensional graphics hardware |
CN102982159A (zh) * | 2012-12-05 | 2013-03-20 | 上海创图网络科技发展有限公司 | 一种三维网页多场景快速切换方法 |
WO2013070625A1 (en) * | 2011-11-10 | 2013-05-16 | The Directv Group, Inc. | System and method for rendering anti-aliased text to a video screen |
CN104298504A (zh) * | 2014-09-22 | 2015-01-21 | 无锡梵天信息技术股份有限公司 | 基于FreeType字体引擎的实现字体绘制的方法 |
US8988434B1 (en) * | 2012-04-12 | 2015-03-24 | Google Inc. | Text rendering for browsers and mobile based applications |
CN105022758A (zh) * | 2014-04-29 | 2015-11-04 | 高德信息技术有限公司 | 一种文字纹理管理方法及设备 |
CN106157353A (zh) * | 2015-04-28 | 2016-11-23 | Tcl集团股份有限公司 | 一种文字渲染方法和文字渲染装置 |
CN106296782A (zh) * | 2015-05-29 | 2017-01-04 | Tcl集团股份有限公司 | 一种文字渲染方法和文字渲染装置 |
CN106683189A (zh) * | 2016-11-29 | 2017-05-17 | 浙江科澜信息技术有限公司 | 一种在三维场景中渲染文字的方法 |
-
2017
- 2017-05-27 CN CN201710391897.9A patent/CN107221020B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090315892A1 (en) * | 2008-06-18 | 2009-12-24 | Konica Minolta Business Technologies Inc. | Vector image generation method, image processing apparatus, and computer-readable storage medium for computer program |
US20100141659A1 (en) * | 2008-12-09 | 2010-06-10 | Qualcomm Incorporated | Discarding of vertex points during two-dimensional graphics rendering using three-dimensional graphics hardware |
WO2013070625A1 (en) * | 2011-11-10 | 2013-05-16 | The Directv Group, Inc. | System and method for rendering anti-aliased text to a video screen |
US8988434B1 (en) * | 2012-04-12 | 2015-03-24 | Google Inc. | Text rendering for browsers and mobile based applications |
CN102982159A (zh) * | 2012-12-05 | 2013-03-20 | 上海创图网络科技发展有限公司 | 一种三维网页多场景快速切换方法 |
CN105022758A (zh) * | 2014-04-29 | 2015-11-04 | 高德信息技术有限公司 | 一种文字纹理管理方法及设备 |
CN104298504A (zh) * | 2014-09-22 | 2015-01-21 | 无锡梵天信息技术股份有限公司 | 基于FreeType字体引擎的实现字体绘制的方法 |
CN106157353A (zh) * | 2015-04-28 | 2016-11-23 | Tcl集团股份有限公司 | 一种文字渲染方法和文字渲染装置 |
CN106296782A (zh) * | 2015-05-29 | 2017-01-04 | Tcl集团股份有限公司 | 一种文字渲染方法和文字渲染装置 |
CN106683189A (zh) * | 2016-11-29 | 2017-05-17 | 浙江科澜信息技术有限公司 | 一种在三维场景中渲染文字的方法 |
Non-Patent Citations (2)
Title |
---|
CHAO PENG等: "A Real-Time System for Crowd Rendering:Parallel LOD and Texture-Preserving Approach on GPU", 《MIG 2011:MOTION IN GAMES》 * |
陈飞等: "基于SDL和OpenGL实时绘制中文字体", 《计算机工程与设计》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108986193A (zh) * | 2018-07-10 | 2018-12-11 | 武汉国遥新天地信息技术有限公司 | 一种三维文字描边绘制方法 |
CN109902282A (zh) * | 2019-02-20 | 2019-06-18 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种文字排版方法、装置和存储介质 |
CN109902282B (zh) * | 2019-02-20 | 2023-05-09 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种文字排版方法、装置和存储介质 |
CN110930490A (zh) * | 2019-10-31 | 2020-03-27 | 北京庚图科技有限公司 | 一种大规模、高动态文字注记快速可视化方法 |
CN110784773A (zh) * | 2019-11-26 | 2020-02-11 | 北京奇艺世纪科技有限公司 | 弹幕生成方法、装置、电子设备及存储介质 |
CN111222301A (zh) * | 2020-01-07 | 2020-06-02 | 天津麒麟信息技术有限公司 | 一种3d文字绘制方法、系统、可读存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107221020B (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107221020A (zh) | 一种文字纹理绘制方法及装置 | |
US20230038653A1 (en) | Allocation of primitives to primitive blocks | |
JP6337322B2 (ja) | 方法、コンピュータプログラム、装置およびコンピュータ可読記録媒体 | |
CN109936635B (zh) | 负载均衡方法和装置 | |
JP5770375B2 (ja) | シェーダ動作の同期化 | |
US9946535B2 (en) | Application building blocks for on demand and on premise usage | |
US20110234587A1 (en) | Method and system for rendering or interactive lighting of a complex three dimensional scene | |
US8416260B1 (en) | Sigma buffer for rendering small objects | |
US20170161947A1 (en) | Method and system for converting an existing 3d model into graphical data | |
US11037520B2 (en) | Screen capture prevention | |
WO2021098306A1 (zh) | 一种物品比对方法和装置 | |
CN109672931B (zh) | 用于处理视频帧的方法和装置 | |
EP3459041A1 (en) | Apparatus and method for mapping frame buffers to logical displays | |
CN113626113A (zh) | 一种页面渲染方法和装置 | |
CN104144126B (zh) | 通过图像处理实现流量优化的方法及系统、客户端 | |
CN111475231A (zh) | 生成占位图的方法、装置、电子设备及可读介质 | |
CN104392408A (zh) | 一种展现图像的系统及方法 | |
CN110851522A (zh) | 展示数据的方法和装置 | |
CN111145358B (zh) | 图像处理方法、装置、硬件装置 | |
CN110515906A (zh) | 一种产品展示方法、装置、设备及计算机可读存储介质 | |
CN109684363A (zh) | 多端多态的物料处理方法、装置、服务器及存储介质 | |
KR101727675B1 (ko) | 의료 영상 형성, 수신 및 전송 방법 | |
CN114218590A (zh) | 权限配置方法、装置、设备、介质 | |
CN104917810A (zh) | 一种基于全局变量的用户设备的连接方法及连接装置 | |
CN114445523A (zh) | 基于Echarts地图模型大数据量的加载优化方法及系统 |
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 |