CN106296782B - 一种文字渲染方法和文字渲染装置 - Google Patents
一种文字渲染方法和文字渲染装置 Download PDFInfo
- Publication number
- CN106296782B CN106296782B CN201510290935.2A CN201510290935A CN106296782B CN 106296782 B CN106296782 B CN 106296782B CN 201510290935 A CN201510290935 A CN 201510290935A CN 106296782 B CN106296782 B CN 106296782B
- Authority
- CN
- China
- Prior art keywords
- font
- texture
- image
- font image
- coordinate
- 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.)
- Active
Links
Landscapes
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种文字渲染方法和文字渲染装置,其中,该方法包括:创建只有alpha通道的纹理;依次获取待渲染的字体图像并进行预处理;遍历所有预处理后的字体图像的字体大小;按照字体由大到小的顺序将预处理后的字体图像依次更新到纹理中;检测在当前纹理中的最后一张字体图像之前是否存在能够容纳该最后一张字体图像的可用纹理区域;若存在,则将该最后一张字体图像移动到可用纹理区域;否则,更新记录每张字体图像在纹理中的纹理坐标;遍历渲染树,将渲染树中的文字渲染节点的坐标转换为世界坐标系中的坐标,以便将各预处理后的文字图像渲染到相应的文字渲染节点中。本发明提供的技术方案能够有效减少文字的内存占用量。
Description
技术领域
本发明涉及图像处理领域,具体涉及一种文字渲染方法和文字渲染装置。
背景技术
随着移动开发平台(例如Iphone、Android开发平台)的流行和普及,越来越多的人享受着移动平台带来的视觉体验。OpenGL ES是OpenGL三维图形应用程序编程接口(API,Application Programming Interface)的子集,针对手机、掌上电脑(PDA,PersonalDigital Assistant)和游戏主机等嵌入式设备而设计。随着OpenGL ES在智能电视和智能手机等智能终端上的应用,基于3D的视觉体验效果也越来越流行起来,更多的三维(即3D)应用程序出现在人们的生活中。相比较二维(即2D)来说,3D图形具有无法比拟的用户体验,但是嵌入式平台资源非常有限,如何在紧张的资源下,开发出响应迅速3D的应用,对快速占领市场、增强用户体验,具有非凡的意义!
目前,3D场景中的文字渲染都是基于纹理渲染,在智能终端的3D界面上文字显示非常多,或者该3D界面上的字体存在不同字号、粗体、斜体显示效果时,就需要将不同效果的文字制作成不同的纹理,用于3D渲染显示,这种方案会大大浪费嵌入式系统的显存,尤其在嵌入式平台内存和显存共用的情况,瓶颈尤其突出。举例说明,假设如图1-a所示,通过freeType生成的分辨率大小为40*160的“最近观看”字体图像,而遵循目前嵌入式纹理2的N次方的规则,如图1-b所示,该字体图像的纹理大小至少要做到64*256,这样填充点点的区域就被浪费了。
发明内容
本发明提供一种文字渲染方法和文字渲染装置,用于减少文字的内存占用量。
本发明一方面提供一种文字渲染方法,包括:
创建只有alpha通道的纹理;
依次获取待渲染的字体图像进行预处理,使得预处理后的字体图像只包含alpha通道的数据;
遍历所有预处理后的字体图像的字体大小;
按照字体由大到小的顺序,将预处理后的字体图像依次更新到所述纹理中;
检测在当前所述纹理中的最后一张字体图像之前是否存在能够容纳当前所述纹理中的最后一张字体图像的可用纹理区域;
若存在,则将当前所述纹理中的最后一张字体图像移动到所述可用纹理区域,并返回执行所述检测在当前所述纹理中的最后一张字体图像之前是否存在能够容纳当前所述纹理中的最后一张字体图像的可用纹理区域的步骤;
若不存在,则:更新记录每张字体图像在所述纹理中的纹理坐标;遍历渲染树,将所述渲染树中的文字渲染节点的坐标转换为世界坐标系中的坐标;根据每张字体图像在所述纹理中的纹理坐标以及所述文字渲染节点在所述世界坐标系中的坐标,将各预处理后的文字图像渲染到相应的文字渲染节点中。
本发明另一方面提供一种文字渲染装置,包括:
创建单元,用于创建只有alpha通道的纹理;
预处理单元,用于依次获取待渲染的字体图像进行预处理,使得预处理后的字体图像只包含alpha通道的数据;
字体大小遍历单元,用于遍历所有预处理后的字体图像的字体大小;
更新单元,用于按照字体由大到小的顺序,将所述预处理单元预处理后的字体图像更新到所述纹理中;
检测单元,用于检测在当前所述纹理中的最后一张字体图像之前是否存在能够容纳当前所述纹理中的最后一张字体图像的可用纹理区域;
调整单元,用于当所述检测单元的检测结果为存在时,将当前所述纹理中的最后一张字体图像移动到所述可用纹理区域,并触发所述检测单元;
记录单元,用于当所述检测单元的检测结果为不存在时,更新记录每张字体图像在所述纹理中的纹理坐标;
遍历转换单元,用于遍历渲染树,将所述渲染树中的文字渲染节点的坐标转换为世界坐标系中的坐标;
渲染单元,用于根据所述记录单元记录的每张字体图像在所述纹理中的纹理坐标以及所述文字渲染节点在所述世界坐标系中的坐标,将各预处理后的文字图像渲染到相应的文字渲染节点中。
由上可见,本发明中通过创建只有alpha通道的纹理,将渲染之前将字体图像预处理为只包含alpha通道的数据的字体图像,使得原来一个像素占四个字节的文字图像转变为一个像素占一个字节的文字图像,从而使得文字纹理内存占用减少为原来的四分之一,并且,字体图像按照字体大小依次更新到该纹理中,通过迭代检测在该纹理中的最后一张字体图像之前是否存在可容纳当前该最后一张字体图像的纹理区域,将小字号的字体图像移动到之前的可用纹理区域中,从而减少了纹理区域的浪费,进一步减少了文字内存的占用量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1-a为“最近观看”字体图像示意图;
图1-b为在图1-a基础上,基于目前嵌入式纹理2的N次方的规则生成的“最近观看”字体图像的内存占用量示意图;
图2-a为本发明提供的一种文字渲染方法较佳实施例的流程示意图;
图2-b为图2-a所示方法在一种应用场景下按照字体由大到小的顺序将预处理后的字体图像更新到纹理后的纹理示意图;
图2-c为图2-a所示方法在一种应用场景下将“主页”字体图像移动到可用纹理区域后的纹理示意图;
图2-d为图2-a所示方法在一种应用场景下文字图像A的纹理坐标示意图;
图2-e为图2-a所示方法在一种应用场景下渲染树示意图;
图3为本发明提供的一种文字渲染装置较佳实施例结构示意图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面以一实施例对本发明中的一种文字渲染方法进行描述,请参阅图2-a,本发明实施例中的文字渲染方法包括以下步骤:
201、创建只有alpha通道的纹理;
本发明实施例中,alpha通道(即阿尔法通道)是一个8位的灰度通道,该通道用256级灰度来记录图像中的透明度信息,定义透明、不透明和半透明区域。文字渲染装置首先创建只有alpha通道的纹理,由于一个分辨率为512*512的纹理通常可以存放程序的整个用户界面(UI,User Interface)使用到的字体,因此,在步骤201中,文字渲染装置可以创建分辨率为512*512的纹理,当然,文字渲染装置也可以创建其它分辨率的纹理或者根据UI实际使用到的字体数量创建相应分辨率大小的纹理,此处不作限定。应理解,如果UI使用到的字体数量超过所创建的纹理能容纳的范围,则创建新的只有alpha通道的纹理存放剩余的字体。
202、依次获取待渲染的字体图像进行预处理,使得预处理后的字体图像只包含alpha通道的数据;
本发明实施例中,文字渲染装置可从终端的程序控制台中依次获取待渲染的字体图像进行预处理,举例说明,比如程序的UI中的一个渲染节点,需要渲染“电视管家”四个字,那么文字渲染装置就从程序控制台中的相应位置获取将包含“电视管家”字符串的字体图像,并对包含“电视管家”字符串的字体图像进行预处理,使得预处理后的字图图像只包含alpha通道的数据。
可选的,若文字渲染装置获取的待渲染的字体图像中包含两个以上字体,则将包含两个以上字体的字体图像拆分为包含单个字体的字体图像,之后分别对拆分后得到的字体图像进行上述预处理。举例说明,假设文字渲染装置获取的待渲染的字体图像为包含“电视管家”字符串的字体图像,则分别把该字体图像拆分为“电”、“视”、“管”和“家”四张字体图像,之后分别对这四张字体图像进行上述预处理。具体地,遍历该字体图像中的字符串(即“电视管家”),通过freetype工具生成“电”、“视”、“管”和“家”四张字体图像,之后分别将这四张字体图像解码后,转换为只有alpha通道的数据。
203、遍历所有预处理后的字体图像的字体大小;
文字渲染装置遍历所有预处理后的字体图像的字体大小,以便获知各个预处理后的字体图像的字体大小。
具体地,文字渲染装置检测字体图像的字体大小可以参照已有技术实现,此处不再赘述。
204、按照字体由大到小的顺序,将预处理后的字体图像更新到上述纹理中;
具体地,文字渲染装置按照字体由大到小的顺序,通过glTexSubImage2D函数将预处理后的字体图像更新到纹理中。
205、检测在当前上述纹理中的最后一张字体图像之前是否存在能够容纳当前上述纹理中的最后一张字体图像的可用纹理区域;
文字渲染装置检测在当前上述纹理中的最后一张字体图像之前是否存在能够容纳当前上述纹理中的最后一张字体图像的可用纹理区域,若存在能够容纳当前上述纹理中的最后一张字体图像的可用纹理区域,则执行步骤206,若不存在能够容纳当前上述纹理中的最后一张字体图像的可用纹理区域,则执行步骤207。
206、将当前上述纹理中的最后一张字体图像移动到上述可用纹理区域;
文字渲染装置将当前上述纹理中的最后一张字体图像移动到上述可用纹理区域,之后返回步骤205。
举例说明,预处理后的字体图像有“影视”、“视频专区”和“主页”三张字体图像,其中,“影视”为初号字体,“视频专区”为小一号字体,“主页”为四号字体,如图2-b所示为步骤204按照字体由大到小的顺序将预处理后的字体图像更新到步骤201创建的纹理后的纹理示意图,在步骤205中,文字渲染装置检测到在该纹理中的最后一张字体图像(即“主页”字体图像)之前存在能够容纳“主页”字体图像的可用纹理区域,则将“主页”字体图像移动到上述可用纹理区域并返回步骤205。图2-c所示为将“主页”字体图像移动到上述可用纹理区域后的纹理示意图。
207、更新记录每张字体图像在上述纹理中的纹理坐标;
具体地,每张字体图像在上述纹理中的纹理坐标的计算方式如下:
XcoordStart=XStart;
YcoordStart=YStart;
XcoordEnd=XStart+mx/Mx;
YcoordEnd=YStart+my/My。
其中,XcoordStart和YcoordStart分别表示字体图像的左上角顶点的横坐标和纵坐标,XcoordEnd和YcoordEnd分别表示字体图像的右下角顶点的横坐标和纵坐标,XStart和YStart根据上述纹理中从上到下、从左到右的文字图像排列规则获得,表示排完前一个文字图像后,排放另一文字图像的位置坐标点的横坐标值和纵坐标值,mx表示文字图像每一行的像素点数量,my表示文字图像每一列的像素点数量,Mx表示步骤201创建的纹理中每一行的像素点数量,My表示步骤201创建的纹理中每一列的像素点数量。
举例说明,假设步骤201创建的纹理的分辨率为512*512,文字图像A的分别率为64*64,则如图2-d所示,文字图像A的纹理坐标计算方式如下:XcoordStart=XStart;YcoordStart=YStart;XcoordEnd=XStart+64/512;YcoordEnd=YStart+64/512。
可选的,通过基于哈希(即hash)管理的字体缓冲表存储字体、字体图像以及哈希值的映射关系信息,其中,上述哈希值基于如下字体属性中的一项或两项以上计算得到:字体的统一码(即unicode)、字体的颜色、字体的字号、字体的字形,举例说明,某一字体的unicode为3575,字号为20,则由“3575+20”的字符串计算一个哈希值139dd91374d10c66fc67dd8eb0d32a15,具体地,哈希值的计算过程可以参照已有技术实现,此处不作限定。
在步骤207中,在上述字体缓冲表中将每张字体图像在上述纹理中的纹理坐标与相应字体图像的哈希值进行关联,以便形成字体、字体图像、哈希值和字体图像在上述纹理中的纹理坐标的唯一映射,减少检索次数。具体地,文字渲染装置可以在程序初始化时根据程序的UI预先生成上述字体缓冲表。
208、遍历渲染树,将上述渲染树中的文字渲染节点的坐标转换为世界坐标系中的坐标;
本发明实施例中,上述渲染树在程序启动加载场景时根据层次化组织方式生成,在渲染树中存在一个或多个根节点,每个根节点又存在多个子节点,如图2-e所示的渲染树示意图,根节点为程序UI场景的容器,存放父物体的集合,父物体为可以递归且有叶子节点的子节点,子物体为渲染树的叶子节点。文字渲染装置遍历渲染树,将上述渲染树中的文字渲染节点的坐标转换为世界坐标系中的坐标。
下面对分别对世界坐标系和本地坐标系的定义进行说明。世界坐标系就是将所有物体投射到同一个坐标系的坐标系,对于UI上的所有物体来说,世界坐标系都是相同的并且不会改变。本地坐标系,就是坐标系以物体的中心为坐标原点,物体旋转、平移等操作都是围绕本地坐标系进行的,这时当物体模型进行旋转、平移等操作时,本地坐标系也执行相应的旋转、平移等操作。本地坐标系是一个假想的坐标系,该坐标系与物体的相对位置至始至终是不变的,假想出这个坐标系的目的主要是为了正向理解对三维场景中物体执行的平移和旋转操作。使用本地坐标系理解模型变换时,所有的变换操作直接作用与本地坐标系,由于本地坐标系与物体的相对位置不变,因此对本地坐标系进行平移、旋转和缩放时,物体在场景中位置和形状也会发生相应的变化。
文字渲染装置在渲染前需要先将渲染树中的各文字渲染节点的坐标转换为世界坐标系中的坐标,即将渲染树中的各文字渲染节从本地坐标系转换到世界坐标系,这一过程又称为世界转换,其作用是把独立的物体放在一个统一的坐标系内,组成一个完整的世界场景。
具体地,文字渲染装置将上述渲染树中的文字渲染节点的坐标转换为世界坐标系中的坐标可以参照已有技术实现,此处不再赘述。
209、根据每张字体图像在上述纹理中的纹理坐标以及上述文字渲染节点在上述世界坐标系中的坐标,将各预处理后的文字图像渲染到相应的文字渲染节点中;
可选的,上述每张字体图像仅包含一个字体,则文字渲染装置根据每张字体图像在上述纹理中的纹理坐标以及上述文字渲染节点在上述世界坐标系中的坐标,将各预处理后的文字图像批处理渲染到相应的文字渲染节点中,以实现文字渲染节点的统一渲染,减少文字渲染节点的渲染次数,提高渲染效率,进而提高用户操作响应速度。
具体地,文字渲染装置可以根据每张字体图像在上述纹理中的纹理坐标以及上述文字渲染节点在上述世界坐标系中的坐标,调用glDrawElements函数将各预处理后的文字图像渲染到相应的文字渲染节点中,其中,渲染过程中文字图像的着色部分可以通过着色器(例如shader算法)实现。当然,本发明实施例中,文字渲染装置根据每张字体图像在上述纹理中的纹理坐标以及上述文字渲染节点在上述世界坐标系中的坐标,将各预处理后的文字图像渲染到相应的文字渲染节点中的过程也可以参照其它已有技术实现,此处不再赘述。
需要说明的是,本发明实施例中的文字渲染装置具体可以是集成在各种信息处理终端(例如手机、笔记本、平板电脑、个人计算机(PC,Personal Computer)等)中,或者也可以为独立于信息处理终端,且能够通过有线或者无线方式与信息处理终端进行交互的装置,此处不作限定。
由上可见,本发明中通过创建只有alpha通道的纹理,将渲染之前将字体图像预处理为只包含alpha通道的数据的字体图像,使得原来一个像素占四个字节的文字图像转变为一个像素占一个字节的文字图像,从而使得文字纹理内存占用减少为原来的四分之一,并且,字体图像按照字体大小依次更新到该纹理中,通过迭代检测在该纹理中的最后一张字体图像之前是否存在可容纳当前该最后一张字体图像的纹理区域,将小字号的字体图像移动到之前的可用纹理区域中,从而减少了纹理区域的浪费,进一步减少了文字内存的占用量。
下面以另一实施例对本发明中的一种文字渲染装置进行描述,请参阅图3,本发明实施例中的文字渲染装置300包括:
创建单元301,用于创建只有alpha通道的纹理;
预处理单元302,用于依次获取待渲染的字体图像进行预处理,使得预处理后的字体图像只包含alpha通道的数据;
字体大小遍历单元303,用于遍历所有预处理后的字体图像的字体大小;
更新单元304,用于按照字体由大到小的顺序,将预处理单元302预处理后的字体图像更新到创建单元301创建的纹理中;
检测单元305,用于检测在当前所述纹理中的最后一张字体图像之前是否存在能够容纳当前所述纹理中的最后一张字体图像的可用纹理区域;
调整单元306,用于当检测单元305的检测结果为存在时,将当前所述纹理中的最后一张字体图像移动到所述可用纹理区域,并触发检测单元305;
记录单元307,用于当检测单元305的检测结果为不存在时,更新记录每张字体图像在所述纹理中的纹理坐标;
遍历转换单元308,用于遍历渲染树,将上述渲染树中的文字渲染节点的坐标转换为世界坐标系中的坐标;
渲染单元309,用于根据记录单元307记录的每张字体图像在上述纹理中的纹理坐标以及上述文字渲染节点在上述世界坐标系中的坐标,将各预处理后的文字图像渲染到相应的文字渲染节点中。
可选的,预处理单元302还用于:若获取的待渲染的字体图像中包含两个以上字体,则将包含两个以上字体的字体图像拆分为包含单个字体的字体图像;分别对拆分后得到的字体图像进行预处理。
可选的,渲染单元309具体用于:根据每张字体图像在上述纹理中的纹理坐标以及上述文字渲染节点在上述世界坐标系中的坐标,将各预处理后的文字图像批处理渲染到相应的文字渲染节点中。
可选的,渲染单元309具体用于:根据每张字体图像在上述纹理中的纹理坐标以及上述文字渲染节点在上述世界坐标系中的坐标,调用glDrawElements函数将各预处理后的文字图像渲染到相应的文字渲染节点中。
可选的,记录单元307具体用于:在字体缓冲表中将每张字体图像在上述纹理中的纹理坐标与相应字体图像的哈希值进行关联,其中,上述字体缓冲表包含字体、字体图像以及哈希值这三者的映射关系信息,上述哈希值基于如下字体属性中的一项或两项以上计算得到:字体的统一码、字体的颜色、字体的字号、字体的字形。
需要说明的是,本发明实施例中的文字渲染装置具体可以是集成在各种信息处理终端(例如手机、笔记本、平板电脑、PC等)中,或者也可以为独立于信息处理终端,且能够通过有线或者无线方式与信息处理终端进行交互的装置,此处不作限定。
应理解,本发明实施例中的文字渲染装置可以如上述方法实施例中提及的文字渲染装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
由上可见,本发明中通过创建只有alpha通道的纹理,将渲染之前将字体图像预处理为只包含alpha通道的数据的字体图像,使得原来一个像素占四个字节的文字图像转变为一个像素占一个字节的文字图像,从而使得文字纹理内存占用减少为原来的四分之一,并且,字体图像按照字体大小依次更新到该纹理中,通过迭代检测在该纹理中的最后一张字体图像之前是否存在可容纳当前该最后一张字体图像的纹理区域,将小字号的字体图像移动到之前的可用纹理区域中,从而减少了纹理区域的浪费,进一步减少了文字内存的占用量。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上为对本发明所提供的一种文字渲染方法和文字渲染装置的描述,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种文字渲染方法,其特征在于,包括:
创建只有alpha通道的纹理;
依次获取待渲染的字体图像进行预处理,使得预处理后的字体图像只包含alpha通道的数据;
遍历所有预处理后的字体图像的字体大小;
按照字体由大到小的顺序,将预处理后的字体图像依次更新到所述纹理中;
检测在当前所述纹理中的最后一张字体图像之前是否存在能够容纳当前所述纹理中的最后一张字体图像的可用纹理区域;
若存在,则将当前所述纹理中的最后一张字体图像移动到所述可用纹理区域,并返回执行所述检测在当前所述纹理中的最后一张字体图像之前是否存在可容纳当前所述纹理中的最后一张字体图像的可用纹理区域的步骤;
若不存在,则:更新记录每张字体图像在所述纹理中的纹理坐标;遍历渲染树,将所述渲染树中的文字渲染节点的坐标转换为世界坐标系中的坐标;根据每张字体图像在所述纹理中的纹理坐标以及所述文字渲染节点在所述世界坐标系中的坐标,将各预处理后的字体图像渲染到相应的文字渲染节点中。
2.根据权利要求1所述的方法,其特征在于,所述依次获取待渲染的字体图像进行预处理,使得预处理后的字体图像只包含alpha通道的数据,包括:
若获取的待渲染的字体图像中包含两个以上字体,则将包含两个以上字体的字体图像拆分为包含单个字体的字体图像;
分别对拆分后得到的字体图像进行预处理。
3.根据权利要求2所述的方法,其特征在于,所述根据每张字体图像在所述纹理中的纹理坐标以及所述文字渲染节点在所述世界坐标系中的坐标,将各预处理后的字体图像渲染到相应的文字渲染节点中,具体为:
根据每张字体图像在所述纹理中的纹理坐标以及所述文字渲染节点在所述世界坐标系中的坐标,将各预处理后的字体图像批处理渲染到相应的文字渲染节点中。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述根据每张字体图像在所述纹理中的纹理坐标以及所述文字渲染节点在所述世界坐标系中的坐标,将各预处理后的字体图像渲染到相应的文字渲染节点中,具体为:
根据每张字体图像在所述纹理中的纹理坐标以及所述文字渲染节点在所述世界坐标系中的坐标,调用glDrawElements函数将各预处理后的字体图像渲染到相应的文字渲染节点中。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述更新记录每张字体图像在所述纹理中的纹理坐标,包括:
在字体缓冲表中将每张字体图像在所述纹理中的纹理坐标与相应字体图像的哈希值进行关联,其中,所述字体缓冲表包含字体、字体图像以及哈希值这三者的映射关系信息,所述哈希值基于如下字体属性中的一项或两项以上计算得到:字体的统一码、字体的颜色、字体的字号、字体的字形。
6.一种文字渲染装置,其特征在于,包括:
创建单元,用于创建只有alpha通道的纹理;
预处理单元,用于依次获取待渲染的字体图像进行预处理,使得预处理后的字体图像只包含alpha通道的数据;
字体大小遍历单元,用于遍历所有预处理后的字体图像的字体大小;
更新单元,用于按照字体由大到小的顺序,将所述预处理单元预处理后的字体图像更新到所述纹理中;
检测单元,用于检测在当前所述纹理中的最后一张字体图像之前是否存在能够容纳当前所述纹理中的最后一张字体图像的可用纹理区域;
调整单元,用于当所述检测单元的检测结果为存在时,将当前所述纹理中的最后一张字体图像移动到所述可用纹理区域,并触发所述检测单元;
记录单元,用于当所述检测单元的检测结果为不存在时,更新记录每张字体图像在所述纹理中的纹理坐标;
遍历转换单元,用于遍历渲染树,将所述渲染树中的文字渲染节点的坐标转换为世界坐标系中的坐标;
渲染单元,用于根据所述记录单元记录的每张字体图像在所述纹理中的纹理坐标以及所述文字渲染节点在所述世界坐标系中的坐标,将各预处理后的字体图像渲染到相应的文字渲染节点中。
7.根据权利要求6所述的文字渲染装置,其特征在于,所述预处理单元还用于:若获取的待渲染的字体图像中包含两个以上字体,则将包含两个以上字体的字体图像拆分为包含单个字体的字体图像;分别对拆分后得到的字体图像进行预处理。
8.根据权利要求7所述的文字渲染装置,其特征在于,所述渲染单元具体用于:根据每张字体图像在所述纹理中的纹理坐标以及所述文字渲染节点在所述世界坐标系中的坐标,将各预处理后的字体图像批处理渲染到相应的文字渲染节点中。
9.根据权利要求6至8任一项所述的文字渲染装置,其特征在于,所述渲染单元具体用于:根据每张字体图像在所述纹理中的纹理坐标以及所述文字渲染节点在所述世界坐标系中的坐标,调用glDrawElements函数将各预处理后的字体图像渲染到相应的文字渲染节点中。
10.根据权利要求6至8任一项所述的文字渲染装置,其特征在于,所述记录单元具体用于:在字体缓冲表中将每张字体图像在所述纹理中的纹理坐标与相应字体图像的哈希值进行关联,其中,所述字体缓冲表包含字体、字体图像以及哈希值这三者的映射关系信息,所述哈希值基于如下字体属性中的一项或两项以上计算得到:字体的统一码、字体的颜色、字体的字号、字体的字形。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510290935.2A CN106296782B (zh) | 2015-05-29 | 2015-05-29 | 一种文字渲染方法和文字渲染装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510290935.2A CN106296782B (zh) | 2015-05-29 | 2015-05-29 | 一种文字渲染方法和文字渲染装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106296782A CN106296782A (zh) | 2017-01-04 |
CN106296782B true CN106296782B (zh) | 2019-04-26 |
Family
ID=57655142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510290935.2A Active CN106296782B (zh) | 2015-05-29 | 2015-05-29 | 一种文字渲染方法和文字渲染装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106296782B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107221020B (zh) * | 2017-05-27 | 2021-04-16 | 北京奇艺世纪科技有限公司 | 一种文字纹理绘制方法及装置 |
CN110019612B (zh) * | 2017-11-23 | 2022-03-25 | 腾讯科技(深圳)有限公司 | 地图渲染方法及相关设备 |
CN109117122B (zh) * | 2018-07-12 | 2021-10-01 | 北京猫眼文化传媒有限公司 | 一种列表视图创建方法及装置 |
CN112767523A (zh) * | 2021-01-20 | 2021-05-07 | 四川湖山电器股份有限公司 | 一种图像渲染及漫游方法 |
CN117670642A (zh) * | 2022-09-07 | 2024-03-08 | 象帝先计算技术(重庆)有限公司 | 图像渲染方法、图形处理器、图形处理系统、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286240A (zh) * | 2008-04-22 | 2008-10-15 | 北京航空航天大学 | 一种可快速配置和实时渲染的安防三维电子地图 |
CN103092612A (zh) * | 2012-12-31 | 2013-05-08 | 深圳天珑无线科技有限公司 | 实现安卓操作系统3d桌面贴图的方法及电子装置 |
CN103186919A (zh) * | 2011-12-28 | 2013-07-03 | 腾讯科技(深圳)有限公司 | 一种文字渲染方法及装置 |
CN103955957A (zh) * | 2014-04-22 | 2014-07-30 | Tcl集团股份有限公司 | 一种3d图形渲染方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8115774B2 (en) * | 2006-07-28 | 2012-02-14 | Sony Computer Entertainment America Llc | Application of selective regions of a normal map based on joint position in a three-dimensional model |
-
2015
- 2015-05-29 CN CN201510290935.2A patent/CN106296782B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286240A (zh) * | 2008-04-22 | 2008-10-15 | 北京航空航天大学 | 一种可快速配置和实时渲染的安防三维电子地图 |
CN103186919A (zh) * | 2011-12-28 | 2013-07-03 | 腾讯科技(深圳)有限公司 | 一种文字渲染方法及装置 |
CN103092612A (zh) * | 2012-12-31 | 2013-05-08 | 深圳天珑无线科技有限公司 | 实现安卓操作系统3d桌面贴图的方法及电子装置 |
CN103955957A (zh) * | 2014-04-22 | 2014-07-30 | Tcl集团股份有限公司 | 一种3d图形渲染方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106296782A (zh) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106296782B (zh) | 一种文字渲染方法和文字渲染装置 | |
US9652880B2 (en) | 2D animation from a 3D mesh | |
CN105556571B (zh) | 使用计算着色器作为顶点着色器的前端 | |
CN102523473B (zh) | 一种三维界面显示装置、方法及终端 | |
US9202309B2 (en) | Methods and apparatus for digital stereo drawing | |
CN103886631A (zh) | 基于移动设备的三维虚拟室内展示系统 | |
CN107369205B (zh) | 一种移动终端城市二三维联动显示方法 | |
CN106157353B (zh) | 一种文字渲染方法和文字渲染装置 | |
CN103413343B (zh) | 一种3d图像动画引擎 | |
CN105096368B (zh) | 三维对象处理方法和相关装置 | |
CN103606184B (zh) | 一种基于二维和三维一体化矢量渲染引擎的装置 | |
CN108597014B (zh) | 一种基于可视化编程的跨平台渲染效果的编辑系统 | |
CN106990961B (zh) | 一种WebGL图形渲染引擎的建立方法 | |
CN105321142B (zh) | 经由计算流水线进行的采样、错误管理和/或上下文切换 | |
CN108958724A (zh) | 三维可视化引擎构建方法、装置、引擎、浏览器、设备及存储介质 | |
CN108537891A (zh) | 三维材质和贴图数据自动转换到ue4的方法 | |
CN104680532A (zh) | 一种对象标注方法及装置 | |
CN108572772A (zh) | 图片内容呈现方法及装置 | |
US9704290B2 (en) | Deep image identifiers | |
CN106971370B (zh) | 一种基于图片作为背景画平面矢量图的系统及方法 | |
CN113436307B (zh) | 基于osgEarth影像数据到UE4场景的映射算法 | |
CN103136169A (zh) | 一种显示文字的方法及装置 | |
CN106023320A (zh) | 一种嵌入式操作系统三维图形制作软件 | |
CN106648586B (zh) | 一种基于网络浏览器进行vr创作的平台 | |
CN112200899A (zh) | 一种采用实例化渲染实现模型业务交互的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |