一种三维字体显示方法以及相关装置的制作方法

xiaoxiao2020-6-26  16

专利名称:一种三维字体显示方法以及相关装置的制作方法
技术领域
本发明涉及嵌入式图形显示领域,尤其涉及一种三维字体显示方法以及相关装置。
背景技术
字体显示技术是目前电子显示设备领域的一项重要技术。字体的显示需要处理字 体类别、文字代码、文字尺寸等文字信息,再根据这些文字信息生成文字图像;文字图像是 根据作为表示文字外形的矢量数据生成的字体轮廓。具体而言,在显示设备显示文字图像 时,使用上述字体轮廓的矢量数据对所需要显示的字体轮廓进行颜色的填充,从而生成文 字图像。随着各种便携式设备的不断发展,字体显示技术在便携式设备的应用也变得越来 越重要,具体该如何使用嵌入式技术,使得字体显示能在便携式设备中有效的实现,是我们 所要解决的一个问题。在现有技术中,嵌入式设备领域对字体的支持都是通过图形用户界面(GUI, Graphical User Interface)来实现。一般分为三个步骤1、调用应用程序编程接口(API, Application Programming hterface)载入字体引擎,根据给定的字体类别等参数去载 入字体库;2、获取字体,确定字符编码,然后根据字符编码到对应的字体库中寻找相应的字 形;3、在指定的位置绘制字体的位图数据。由于现在技术是基于⑶I提供的API来实现文字显示的,而⑶I的实现需要经过 多层的函数调用,故处理的效率低下;而且现在技术从步骤1的载入字体到步骤3的绘制字 体都是以单任务的形式顺序执行的,当显示内容较多时,显示字体的速度比较缓慢。

发明内容
本发明实施例提供了一种三维字体显示方法以及相关装置,用于使用嵌入式系统 的开放图形库(OpenGL ES, OpenGL for Embedded Systems)进行并行的字体显示处理。本发明提供的三维字体显示方法,包括三维字体显示装置创建前台进程和后台 进程;所述前台进程用于获取输入的文字信息,并进行嵌入式系统的开放图形库OpenGL ES 的初始化;所述后台进程用于进行字体库的初始化,并根据所述前台进程的指示执行相应 的操作;三维字体显示装置使用所述前台进程进行OpenGL ES的初始化,通过所述后台进 程进行字体库的初始化;三维字体显示装置使用所述前台进程和所述后台进程的数据交 互,使用OpenGL ES对所述输入的文字信息进行渲染。本发明提供的三维字体显示装置,包括创建单元,用于创建前台进程和后台进 程;初始化单元,用于使用所述前台进程和所述后台进程分别进行嵌入式系统的开放图形 库OpenGL ES的初始化,以及字体库的初始化;渲染单元,用于使用所述前台进程和所述后 台进程的数据交互,使用OpenGL ES对输入的文字信息进行渲染。从以上技术方案可以看出,本发明实施例具有以下优点本发明使用OpenGL ES进行字体的显示,可以直接调用OpenGL ES的图库,提高了执行的效率;并且通过创建前台 进程和后台进程,使得OpenGL ES的初始化以及字体库的初始化可以并行操作,节省了顺序 加载的等待时间,进一步提高了处理的效率。


图1是本发明实施例中三维字体显示方法的一个流程示意图;图2是本发明实施例中三维字体显示方法的另一个流程示意图;图3是本发明实施例中三维字体显示装置的逻辑结构示意图。
具体实施例方式本发明实施例提供了一种三维字体显示方法以及相关装置,用于使用OpenGL ES 进行并行的字体显示处理。请参阅图1,本发明实施例中三维字体显示方法的一个实施例包括101、创建前台进程和后台进程;当需要进行字体显示时,三维字体显示装置同时创建前台进程和后台进程;前台 进程用于获取输入的文字信息,并进行嵌入式系统的开放图形库OpenGL ES的初始化;后 台进程用于进行字体库的初始化,并根据该前台进程的指示执行相应的操作。同时创建两个进程进行字体显示可以合理地进行功能模块的负荷均摊,使得用户 界面的设置操作和后台的执行操作可以同时进行,有效地提高了字体显示的处理效率。102、进行相关信息的初始化;三维字体显示装置通过该前台进程进行嵌入式系统的开放图形库(OpenGL ES, OpenGL for Embedded Systems)的初始化,以及通过后台进程进行字体库的初始化。OpenGL ES是一个平台中立的图形库,在OpenGL ES能够工作之前,需要与一个 实际的窗口系统进行关联,且初始化OpenGL ES标准的嵌入式底层链接(EGL,Embedded Ground Link)函数。EGL为OpenGL ES和本地平台视窗系统之间的接口。103、渲染文字信息。三维字体显示装置通过该前台进程和该后台进程的数据交互,使用OpenGL ES对 输入的文字信息进行渲染。在进行完OpenGL ES的初始化以及字体库的初始化以后,前台进程就可以获取输 入的文字信息,该输入的文字信息可以是用户通过输入设备输入的,也可以是别的终端设 备传输过来的,或通过通信网络下载的,具体根据该三维字体显示装置的应用领域而定,具 体此处不作限定。这些文字信息可以包括文字内容、字体样式和文字大小等。前台进程获取到该文字信息以后,将该文字信息发送给后台进程进行相应的处 理,然后后台进程再将处理的结果返回给前台进程,使得前台进程使用OpenGL ES对该文字 信息进行显示。本发明使用OpenGL ES进行字体的显示,可以直接调用OpenGL ES的图库,提高了 执行的效率;并且通过创建前台进程和后台进程,使得OpenGL ES的初始化以及字体库的 初始化可以并行操作,节省了顺序加载的等待时间,进一步提高了处理的效率。下面对本发明的初始化过程,以及前台进程和后台进程之间的交互进行具体描述,请参阅图2,本发明实施例中三维字体显示方法的一个实施例包括201、创建前台进程和后台进程;本实施例中的步骤201的内容与前述图1所示的实施例中步骤101的内容相同, 此处不再赘述。202、进行相关信息的初始化;三维字体显示装置通过前台进程进行OpenGL ES的初始化,OpenGL ES的初始化 过程可以为一、关联显示设备;前台进程调用相关显示设备的函数,设置该函数的相关参数 (一般为系统默认值),则需要显示的文字内容会在该显示设备中显示;二、初始化EGL函数;前台进程调用EGL的初始化函数,确定EGL的版本号,并链接 EGL函数库;三、选择EGL函数的参数配置;前台进程在该EGL函数库中选择与本地嵌入式设备 匹配的参数配置,该参数配置中包含有众多的属性,这些属性决定了 OpenGL ES的格式和能 力,这些属性可以通过EGL配置函数来读取;四、构造显示界面;前台进程通过EGL窗口函数来构造文字内容的实际显示界面;五、创建状态环境;OpenGL ES具有当前的颜色、纹理坐标、变换矩阵、渲染模式等 众多状态,前台进程根据显示需求,通过EGL环境函数来创建这些状态,这些状态作用于点 阵坐标系,从而在显示设备的帧缓冲区内形成所需要显示的像素。三维字体显示装置通过后台进程进行字体库的初始化,字体库的初始化可以为 后台进程建立与前台进程的数据传输通道,使得后台进程的操作关联前台进程,并创建字 体库的对象,完成字体库的初始化。203、获取输入的文字信息;三维字体显示装置的前台进程获取输入的文字信息,并向该后台进程发送该文字 fn息ο该输入的文字信息可以是用户通过输入设备输入的,也可以是别的终端设备传输 过来的,或通过通信网络下载的,具体根据该三维字体显示装置的应用领域而定,具体此处 不作限定。这些文字信息可以包括文字内容、字体样式、文字大小以及字体颜色等。204、根据文字信息生成位图;三维字体显示装置的后台进程获取前台进程发送的该文字信息,将该文字信息加 载到步骤202中所创建的字体库中,并进行搜索。文字信息的搜索过程即为文字内容的编码映射过程,文字内容中的每个字符在 字库中都有相应的编码,后台进程根据那些字符与编码的映射关系,搜索到该文字内容项 对应的字模,后台进程再根据该字模装载字体样式和文字大小,并将装载后的字模生成位 图;位图由是像素点组成的,这些像素点可以进行不同的排列以构成图样。205、将位图转换成纹理数据;三维字体显示装置的后台进程将该文字信息所生成的位图转换成纹理数据,同时 根据文字信息中的字体颜色设置纹理数据的显示颜色,将处理完后的纹理数据发送给前台 进程。
在OpenGL ES中,位图需要转换成纹理数据才能在OpenGL ES中进行显示处理;纹 理数据可以包括纹理坐标和纹理函数;该纹理数据的显示颜色包括字体颜色和字体背 景的颜色。206、渲染以及显示文字信息。三维字体显示装置的前台进程获取该纹理数据,根据该纹理数据计算该文字信息 的显示轮廓,并使用步骤205得到的字体颜色和字体背景的颜色对该显示轮廓进行渲染。在本发明中,由于前台进程和后台进程的操作是相互独立,在切换显示内容时,后 台进程因为已经对字体库进行了初始化,无需重复进行字体库的导入操作,只需前台进程 进行相应的获取输入文字信息的操作就可以完成字体的显示,相对于现有技术在每次进行 显示时都要重复的导入资源,本发明显然提高了字体显示的效率。上面仅以一些例子对本发明实施例中的应用场景进行了说明,可以理解的是,在 实际应用中,还可以有更多的应用场景,具体此处不作限定。下面对用于执行上述三维字体显示方法的本发明三维字体显示装置进行说明,其 逻辑结构请参考图3,本发明实施例中的三维字体显示装置一个实施例包括创建单元301,用于创建前台进程和后台进程;初始化单元302,用于通过该前台进程和该后台进程分别进行嵌入式系统的开放 图形库OpenGL ES的初始化,以及字体库的初始化;渲染单元303,用于通过该前台进程和该后台进程的数据交互,使用OpenGL ES对 输入的文字信息进行渲染。本发明实施例中的初始化单元302可以包括前台初始化模块3021,用于通过该前台进程进行OpenGL ES的初始化;后台初始化模块3022,用于通过该后台进程创建字库对象,进行字体库的初始化。本发明实施例中的渲染单元303可以包括获取模块3031,用于使用该前台进程获取输入的文字信息,并向该后台进程发送 该文字信息;文字处理模块3032,用于使用该后台进程加载该文字信息,并在该字体库内搜索 该文字信息,将该文字信息转化为位图;生成模块3033,用于使用该后台进程根据该位图生成相应的纹理数据,并向该前 台进程发送该纹理数据;文字渲染模块3034,用于使用该前台进程根据该纹理数据在显示设备上确定显示 轮廓,并使用OpenGL ES对该显示轮廓进行渲染。本发明实施例中的渲染单元303可以进一步包括颜色设置模块3035,用于使用该后台进程设置该文字信息的显示颜色,并向该前 台进程发送该的显示颜色。本发明实施例三维字体显示装置中各个单元具体的交互过程如下当需要进行字体显示时,创建单元301同时创建前台进程和后台进程;该前台进 程用于处理用户界面的相关信息,该后台进程则负责执行该前台进程中所设置的需求,加 载相关信息。当创建单元301执行了操作后,初始化单元302通过该前台进程和该后台进程分
7别进行嵌入式系统的开放图形库OpenGL ES的初始化,以及字体库的初始化。具体可以为 初始化单元302的前台初始化模块3021首先调用相关显示设备的函数,设置该函数的相关 参数;其次,调用EGL的初始化函数,确定EGL的版本号,并链接EGL函数库,在该EGL函数 库中选择与本地嵌入式设备匹配的参数配置,该参数配置中包含有众多的属性,这些属性 决定了 OpenGL ES的格式和能力,这些属性可以通过EGL配置函数来读取;完成EGL函数的 初始化和参数配置后,通过EGL窗口函数来构造文字内容的实际显示界面;最后,进程根据 显示需求,通过EGL环境函数来创建这些状态,这些状态作用于点阵坐标系,从而在显示设 备的帧缓冲区内形成所需要显示的像素。前台初始化模块3021在前台工作的同时,后台初 始化模块3022建立与前台进程的数据传输通道,使得后台进程的操作关联前台进程,并创 建字库对象,完成字体库的初始化。初始化相关的信息后,渲染单元303通过该前台进程和该后台进程的数据交互, 使用OpenGL ES对输入的文字信息进行渲染。具体可以为获取模块3031通过前台进程获 取输入的文字信息,并向该后台进程发送该文字信息。然后,文字处理模块3032通过后台 进程获取前台进程发送的该文字信息,将该文字信息加载到字体库中,并进行搜索。文字信 息的搜索过程即为文字内容的编码映射过程,文字内容中的每个字符在字库中都有相应的 编码,后台进程根据那些字符与编码的映射关系,搜索到该文字内容项对应的字模,后台进 程再根据该字模装载字体样式和文字大小,并将装载后的字模生成位图,生成模块3033则 通过后台进程根据该位图生成相应的纹理数据,生成纹理数据的同时,颜色设置模块3035 通过可以后台进程在该纹理数据设置该文字信息的显示颜色,并向该前台进程发送该纹理 数据。最后,文字渲染模块3034通过前台进程获取该纹理数据,根据该纹理数据计算该文 字信息的显示轮廓,并使用颜色设置模块3035得到的显示颜色对该显示轮廓进行渲染。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以 通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的 划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件 可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或 讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦 合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显 示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个 网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目 的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以 是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单 元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。本领域普通技术人 员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件 完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只 读存储器,磁盘或光盘等。以上对本发明所提供的一种三维字体显示方法以及相关装置进行了详细介绍,对 于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种三维字体显示方法,其特征在于,包括三维字体显示装置创建前台进程和后台进程;所述前台进程用于获取输入的文字信 息,并进行嵌入式系统的开放图形库OpenGL ES的初始化;所述后台进程用于进行字体库 的初始化,并根据所述前台进程的指示执行相应的操作;三维字体显示装置使用所述前台进程进行OpenGL ES的初始化,使用所述后台进程进 行字体库的初始化;三维字体显示装置使用所述前台进程和所述后台进程的数据交互,使用OpenGL ES对 所述输入的文字信息进行渲染。
2.根据权利要求1所述的方法,其特征在于,所述使用前台进程进行嵌入式系统的开 放图形库OpenGL ES的初始化,使用所述后台进程进行字体库的初始化包括三维字体显示装置使用所述前台进程关联显示设备,初始化OpenGL ES标准的函数,选 择所述函数的参数配置,构造显示界面,以及创建状态环境;三维字体显示装置使用所述后台进程关联所述前台进程,创建字体库的对象。
3.根据权利要求1或2所述的方法,其特征在于,所述使用前台进程和所述后台进程的 数据交互,使用OpenGL ES对输入的文字信息进行渲染包括三维字体显示装置使用所述前台进程获取输入的文字信息,并向所述后台进程发送所 述文字信息;三维字体显示装置使用所述后台进程加载所述文字信息,并在所述字体库内搜索所述 文字信息,将所述文字信息转化为位图;三维字体显示装置使用所述后台进程根据所述位图生成相应的纹理数据,并向所述前 台进程发送所述纹理数据;三维字体显示装置使用所述前台进程根据所述纹理数据在显示设备上确定显示轮廓, 并使用OpenGL ES对所述显示轮廓进行渲染。
4.根据权利要求3所述的方法,其特征在于,所述后台进程根据所述位图生成相应的 纹理数据之后包括三维字体显示装置使用所述后台进程设置所述文字信息的显示颜色,并向所述前台进 程发送所述的显示颜色;三维字体显示装置使用所述前台进程使用OpenGL ES对所述具体轮廓进行渲染包括 三维字体显示装置使用所述前台进程根据所述显示颜色使用OpenGL ES对所述具体轮 廓进行渲染。
5.一种三维字体显示装置,其特征在于,包括 创建单元,用于创建前台进程和后台进程;初始化单元,用于使用所述前台进程和所述后台进程分别进行嵌入式系统的开放图形 库OpenGL ES的初始化,以及字体库的初始化;渲染单元,用于使用所述前台进程和所述后台进程的数据交互,使用OpenGL ES对输入 的文字信息进行渲染。
6.根据权利要求5所述的装置,其特征在于,所述初始化单元包括 前台初始化模块,用于使用所述前台进程进行OpenGL ES的初始化;后台初始化模块,用于使用所述后台进程创建字库对象,进行字体库的初始化。
7.根据权利要求5或6所述的装置,其特征在于,所述渲染单元包括获取模块,用于使用所述前台进程获取输入的文字信息,并向所述后台进程发送所述 文字信息;文字处理模块,用于使用所述后台进程加载所述文字信息,并在所述字体库内搜索所 述文字信息,将所述文字信息转化为位图;生成模块,用于使用所述后台进程根据所述位图生成相应的纹理数据,并向所述前台 进程发送所述纹理数据;文字渲染模块,用于使用所述前台进程根据所述纹理数据在显示设备上确定显示轮 廓,并使用OpenGL ES对所述显示轮廓进行渲染。
8.根据权利要求7所述的装置,其特征在于,所述渲染单元还包括颜色设置模块,用于使用所述后台进程设置所述文字信息的显示颜色,并向所述前台 进程发送所述的显示颜色;所述文字渲染模块还用于,使用所述前台进程根据所述显示颜色使用OpenGL ES对所 述具体轮廓进行渲染。
全文摘要
本发明实施例公开了一种三维字体显示方法以及相关装置,用于使用OpenGL ES进行并行的字体显示处理。本发明实施例方法包括三维字体显示装置创建前台进程和后台进程;使用所述前台进程进行嵌入式系统的开放图形库OpenGL ES的初始化,使用所述后台进程进行字体库的初始化;使用所述前台进程和所述后台进程的数据交互,使用OpenGL ES对输入的文字信息进行渲染。此外,本发明还提供了实现该方法的相关装置。
文档编号G09G5/24GK102122502SQ20111006203
公开日2011年7月13日 申请日期2011年3月15日 优先权日2011年3月15日
发明者张伟胜, 施明刚, 邓珂曦 申请人:深圳芯邦科技股份有限公司

最新回复(0)