CN113920223A - 位图渲染方法及系统 - Google Patents
位图渲染方法及系统 Download PDFInfo
- Publication number
- CN113920223A CN113920223A CN202111332699.8A CN202111332699A CN113920223A CN 113920223 A CN113920223 A CN 113920223A CN 202111332699 A CN202111332699 A CN 202111332699A CN 113920223 A CN113920223 A CN 113920223A
- Authority
- CN
- China
- Prior art keywords
- bitmap
- texture
- typesetting
- rendering
- text
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/60—Editing figures and text; Combining figures or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/80—2D [Two Dimensional] animation, e.g. using sprites
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种位图渲染方法,该方法包括:获取当前动画帧的位图的原始数据;建立排版纹理和信息映射表;将所述当前动画帧的位图的颜色信息局部更新至所述排版纹理;根据更新后的所述排版纹理进行特效的渲染。本申请还公开了一种位图渲染系统、电子装置和计算机可读存储介质。由此,能够尽量降低文字等内容改变引起的GPU渲染的纹理切换的频率,减少纹理数据的冗余更新,提升GPU渲染效率。
Description
技术领域
本申请涉及渲染技术领域,尤其涉及一种位图渲染方法、系统、电子装置及计算机可读存储介质。
背景技术
在当前常见的文字渲染方式中,位图渲染是其中一种,这种方法不涉及图形学复杂的多边形计算。当前文字采用的位图渲染方式,是基于FreeType(一种字体引擎)得到文字的位图原始数据,并基于该数据构建文字的位图,进一步用做文字GPU(GraphicsProcessing Unit,图形处理单元)渲染的纹理(GPU渲染时所需要使用的采样图)。
AE(After Effects)是Adobe公司推出的一款图形视频处理软件,适用于从事设计和视频特技的机构,包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室,属于层类型后期软件。
现有技术在GPU渲染中使用的纹理是以单个文字为单位的,而且没有考虑AE文字特效场景的一些实际情况,例如文字位图的数据量较小,实际输入的文字不会特别多,文字使用的频率可以利用等。这导致在AE文字特效的用户交互场景相应的文字GPU渲染中,会涉及不断的纹理切换,涉及GPU显存频繁的数据交换和更新,影响GPU渲染的效率。
发明内容
本申请的主要目的在于提出一种位图渲染方法、系统、电子装置及计算机可读存储介质,旨在解决如何提高文字等位图的GPU渲染效率的问题。
为实现上述目的,本申请实施例提供了一种位图渲染方法,所述方法包括:
获取当前动画帧的位图的原始数据;
建立排版纹理和信息映射表;
将所述当前动画帧的位图的颜色信息局部更新至所述排版纹理;
根据更新后的所述排版纹理进行特效的渲染。
可选地,所述获取当前动画帧的位图的原始数据包括:
从字体引擎库中获取当前动画帧的原始位图的颜色信息、尺寸信息。
可选地,所述方法在所述建立排版纹理和信息映射表之前还包括:
设置位图数据块的统一尺寸,根据所述原始数据和所述统一尺寸执行所述建立排版纹理和信息映射表的步骤。
可选地,所述设置位图数据块的统一尺寸包括:
根据当前动画帧所述原始数据中每个位图的尺寸信息计算最大尺寸;
从服务端查询预设的经验值;
从所述经验值和所述最大尺寸中取较大值,设置为所述位图数据块的统一尺寸。
可选地,所述设置位图数据块的统一尺寸还包括:
根据所设置的所述统一尺寸更新所述服务端的所述经验值。
可选地,所述建立排版纹理包括:
按照预设尺寸建立排版纹理,并按照所述位图数据块的所述统一尺寸进行分割、排版和编号。
可选地,所述信息映射表中的信息包括每个位图的位图标识、所述原始数据、使用次数、是否在所述排版纹理中、在所述排版纹理中的编号、是否为当前动画帧的位图。
可选地,所述将所述当前动画帧的位图的颜色信息局部更新至所述排版纹理包括:
根据位图标识从所述信息映射表中查询当前位图是否存在;
若所述当前位图已存在,则在所述信息映射表中更新所述当前位图的使用次数;
若所述当前位图不存在,则将所述当前位图的颜色信息局部更新至所述排版纹理中,同时更新所述信息映射表。
可选地,所述将所述当前位图的颜色信息局部更新至所述排版纹理中包括:
判断所述排版纹理的剩余空间是否充足;
若剩余空间充足,则直接将所述当前位图的颜色信息局部更新至所述排版纹理中;
若剩余空间不充足,则通过撤换所述排版纹理中使用次数最低的位图,将所述当前位图的颜色信息更新至所述排版纹理中。
可选地,所述位图包括文字位图或小图标位图。
此外,为实现上述目的,本申请实施例还提供一种位图渲染系统,所述系统包括:
获取模块,用于获取当前动画帧的位图的原始数据;
建立模块,用于建立排版纹理和信息映射表;
更新模块,用于将所述当前动画帧的位图的颜色信息局部更新至所述排版纹理;
渲染模块,用于根据更新后的所述排版纹理进行特效的渲染。
为实现上述目的,本申请实施例还提供一种电子装置,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的位图渲染程序,所述位图渲染程序被所述处理器执行时实现如上述的位图渲染方法。
为实现上述目的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有位图渲染程序,所述位图渲染程序被处理器执行时实现如上述的位图渲染方法。
本申请实施例提出的位图渲染方法、系统、电子装置及计算机可读存储介质,能够通过一定的手段统一不同位图(文字或小图标)的尺寸,针对排版纹理进行局部更新,尽量降低文字等内容改变引起的GPU渲染的纹理切换的频率,减少纹理数据的冗余更新,达到提升GPU渲染效率的目的。
附图说明
图1为实现本申请各个实施例的一种应用环境架构图;
图2为本申请第一实施例提出的一种位图渲染方法的流程图;
图3为第一实施例中设置位图数据块的统一尺寸的细化流程示意图;
图4为图2中步骤S204的细化流程示意图;
图5为本申请第二实施例提出的一种电子装置的硬件架构示意图;
图6为本申请第三实施例提出的一种位图渲染系统的模块示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
请参阅图1,图1为实现本申请各个实施例的一种应用环境架构图。本申请可应用于包括,但不仅限于字体引擎库2、位图渲染系统4、GPU 6的应用环境中。在本申请各个实施例中,所述位图主要是指文字位图,也可以适用于小图标的位图。在后面的实施例中,以文字位图为例进行说明,小图标位图的处理方法与文字类似,在此不再赘述。
其中,所述字体引擎库2为FreeType库。FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件。在本申请各个实施例中,可以从所述字体库2中获取文字的原始数据,例如文字的原始位图的颜色信息。
所述位图渲染系统4用于从所述字体引擎库2中获取当前动画帧文字的原始数据并统一文字尺寸,建立文字排版纹理和文字信息映射表,根据所述原始数据更新所述文字排版纹理,然后根据更新后的所述文字排版纹理在GPU 6中进行文字特效的渲染。其中,在更新所述文字排版纹理时,首先从所述文字信息映射表中查询该文字是否存在;若存在,则只需在所述文字信息映射表中更新该文字的使用次数;若不存在,则将该文字的原始数据局部更新到所述文字排版纹理中,并且更新所述文字信息映射表。并且,判断所述文字排版纹理的尺寸是否充足,若充足,则直接更新;若不充足,则撤换使用次数最少的文字后再更新。
所述GPU 6用于根据所述位图渲染系统4更新的所述文字排版纹理进行文字特效的渲染。GPU渲染是一种渲染方式,本申请各个实施例中所述GPU渲染可以是OpenGL ES渲染。
值得注意的是,所述位图渲染系统4也可以位于所述GPU 6中。
实施例一
如图2所示,为本申请第一实施例提出的一种位图渲染方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。
该方法包括以下步骤:
S200,获取当前动画帧的位图的原始数据。
所述位图主要是指文字位图,也可以适用于小图标的位图。本实施例主要是指AE文字特效的位图渲染场景,小图标位图的处理方法与文字类似。首先在文字特效的位图渲染方式实施场景中,基于当前动画帧的文字ID(标识)从FreeType库中获取到相应的文字位图原始数据,所述原始数据包括文字的原始位图的颜色信息、尺寸信息等。不同文字的原始尺寸是不一样的。
S202,建立排版纹理和信息映射表。
优选地,在建立排版纹理和信息映射表之前,首先需要设置位图数据块的统一尺寸。
在本实施例中,在文字位图的原始尺寸基础上,需要进行尺寸的统一。具体而言,根据预设的经验值(存储在服务端,需要时进行查询,可以设置一个自由度,也可以在代码中设定固定值)和当前动画帧文字的最大尺寸取较大值,设定为文字数据块的统一尺寸,并更新服务端的所述经验值。所述统一尺寸是为了方便在后续建立和更新文字排版纹理时,进行文字数据块的拼接。
具体而言,进一步参阅图3,为所述设置位图数据块的统一尺寸的细化流程示意图。可以理解,该流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。在本实施例中,所述设置位图数据块的统一尺寸具体包括:
S2020,根据当前动画帧中每个位图的尺寸信息计算最大尺寸。
从所述原始数据中可以知道当前动画帧中每个文字位图的尺寸信息,根据所述尺寸信息统计出最大值,可以得到所述最大尺寸。
S2022,从服务端查询预设的经验值。
S2024,从所述经验值和所述最大尺寸中取较大值,设置为所述位图数据块(文字数据块)的统一尺寸。
S2026,根据所设置的所述统一尺寸更新服务端的所述经验值。
在统一文字数据块的尺寸之后,按照预设尺寸建立文字排版纹理。在本实施例中,可以建立1024*1024的文字排版纹理。然后按照文字数据块的统一尺寸进行分割、排版和编号。所述文字排版纹理是指将很多个文字放在一起的一个GPU纹理图,其中包括多个文字数据块,每个文字数据块具有统一尺寸(例如60*60),所述多个文字数据块拼接在一起组成所述文字排版纹理,并且每个所述文字数据块在所述文字排版纹理中具有唯一的索引编号。所述1024*1024的尺寸是考虑到兼容Android低端机器的经验值。
在本实施例中,可以将所有帧的所有文字存在一个文字信息映射表中。所述文字信息映射表中包含了每个文字的文字ID(针对位图即为位图标识)、所述原始数据、使用次数、是否在所述文字排版纹理中、在所述文字排版纹理中的编号、是否为当前动画帧的文字等信息。并且,根据所述文字排版纹理的尺寸和所述文字数据块的统一尺寸,以及所述文字的编号,可以计算出该文字所在的文字数据块在所述文字排版纹理中的位置坐标。另外,根据该文字对应的文字位图的所述原始数据(原始尺寸),还可以计算出所述文字位图在所述文字排版纹理中的实际坐标(由于所述文字数据块的统一尺寸是取的最大尺寸,而所述文字位图的原始尺寸可能较小,因此所述文字位图的实际坐标可能与所述文字数据块的位置坐标不一致)。这些信息都可以记录在所述文字信息映射表中。
值得注意的是,所述文字信息映射表中记录有每个文字的使用频率。因此这里有一个实践上的自由度,对于使用频率低且不在所述文字排版纹理中的文字可以暂时不统计进入所述文字信息映射表,相当于当作没有使用过。
S204,将所述当前动画帧的位图的颜色信息局部更新至所述排版纹理。
在文字排版纹理建立以后,可以将当前动画帧的文字的数据信息更新到文字排版纹理中。在本实施例中,具体是将该文字的颜色信息更新到所述文字排版纹理中。
值得注意的是,在更新文字的数据信息时,对所述文字排版纹理来说,是一种局部更新。也就是说,每个动画帧只更新没出现过的新文字。另外,在所述文字排版纹理中,出现过的文字也有可能因为当前没有使用、使用频率过低或文字排版纹理空间不足等多个因素被替换。
在新的动画关键帧到来之前,只需要根据现有的所述文字排版纹理来进行文字采样和渲染就可以了,并不需要进行采样纹理的切换。
在新的动画关键帧到来的时候或者用户通过交互方式输入新文字的时候,首先会根据文字ID在所述文字信息映射表中进行查询。如果所述文字排版纹理中已有该文字,那么可以直接根据所述文字排版纹理来进行文字采样和渲染,同时在所述文字信息映射表中更新一下相应文字的使用次数。如果在所述文字信息映射表中没有找到该文字,表示该文字是新的文字,需要将该文字的原始数据(颜色信息)通过局部更新的方式更新到所述文字排版纹理中,并且同步更新所述文字信息映射表。
另外,针对特殊情况的考虑,随着动画关键帧的增多和用户输入文字的增多,可能会遇到因所述文字排版纹理的尺寸不足导致的新文字无法更新的问题。这时候需要根据所述文字信息映射表中的文字使用次数来撤换使用次数低的文字,这样就可以继续将新文字更新到所述文字排版纹理中。
具体而言,进一步参阅图4,为上述步骤S204的细化流程示意图。可以理解,该流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。在本实施例中,所述步骤S204具体包括:
S2040,根据位图标识从所述信息映射表中查询当前位图是否存在。若存在,则执行步骤S2042。若不存在,则执行步骤S2044。
所述文字信息映射表中记录了之前出现过的每个文字的文字ID、使用次数、是否在所述文字排版纹理中、在所述文字排版纹理中的编号等信息。针对当前动画帧的每个文字,根据该文字的文字ID从所述文字信息映射表中进行查询。若可以找到相应文字,则表示该文字不是新出现的文字(即旧文字),不需要更新至所述文字排版纹理中。若未找到相应文字,则表示该文字是新出现的文字(即新文字),需要更新至所述文字排版纹理中。
值得注意的是,考虑到可能出现所述文字信息映射表中已有记录,但所述文字排版纹理中不存在的文字(例如可能之前被撤换掉了)这种情况,此时需要进一步查询所述文字信息映射表中记录的是否在所述文字排版纹理中这一信息。若不在所述文字排版纹理中,则需要更新至所述文字排版纹理中。
S2042,在所述信息映射表中更新当前位图的使用次数。
针对旧文字,虽然不需要再次更新至所述文字排版纹理中,但需要在所述文字信息映射表中将该文字的使用次数加一。
S2044,判断所述排版纹理的剩余空间是否充足。若剩余空间充足,则执行步骤S2046。若剩余空间不充足,则执行步骤S2048。
针对新文字,所述文字排版纹理中之前没有出现,需要将该新文字的颜色信息更新至所述文字排版纹理中。但是,考虑到随着动画关键帧的增多和用户输入文字的增多,可能会遇到因所述文字排版纹理的尺寸不足导致的新文字无法更新的问题,在更新之前需要先判断所述文字排版纹理的剩余空间是否充足,也就是说,是否还存在空余的文字数据块可以更新该新文字的颜色信息。
具体而言,所述文字信息映射表中记录有每个文字是否在所述文字排版纹理中等信息。根据已放在所述文字排版纹理中的文字数量和所述文字排版纹理可以容纳的文字数量,即可判断出所述文字排版纹理的剩余空间是否充足。
S2046,将当前位图的颜色信息局部更新至所述排版纹理中,同时更新所述信息映射表。
当所述文字排版纹理的剩余空间充足,即有空余的文字数据块时,可以直接将该文字的颜色信息局部更新至所述文字排版纹理中,也就是将该文字的颜色信息更新到空余的文字数据块中。同时,还需要在所述文字信息映射表中更新该文字相关信息,包括文字ID、原始数据、使用次数、是否在文字排版纹理中、在文字排版纹理中的编号等。
S2048,通过撤换所述排版纹理中使用次数最低的位图,将当前位图的颜色信息更新至所述排版纹理中,同时更新所述信息映射表。
当所述文字排版纹理的剩余空间不充足,即没有空余的文字数据块时,无法直接更新。此时需要先从所述文字信息映射表中查询所述文字排版纹理中已排版的文字中哪个文字的使用次数最低,将使用次数最低的文字撤换掉,然后才能将该新文字的颜色信息更新至撤换时空出来的文字数据块中。同时,还要在所述文字信息映射表中更新该文字相关信息,包括文字ID、原始数据、使用次数、是否在文字排版纹理中、在文字排版纹理中的编号等。
本实施例在所述文字排版纹理创建的时候,考虑到Android低端机器的兼容(这里根据不同的产品定位有一定的自由度),设置了所述文字排版纹理的尺寸大小为1024*1024。而单个文字数据块的大小是基于一个经验值和文字位图原始尺寸中取最大值,例如可以是60*60。因此所述文字排版纹理可以容纳的文字个数大概是(1024/60)*(1024/60),结合文字的使用频率和可撤换这一操作,这个容纳数量对于AE文字特效的场景来说是比较充足的。
回到图2,S206,根据更新后的所述排版纹理进行特效的渲染。
最后,可以将更新后的所述文字排版纹理提交至GPU中,根据更新后的所述文字排版纹理进行文字特效的GPU渲染。
现有技术没有建立文字排版纹理,没有考虑文字的使用频率,没有考虑到某些场景只需要一个文字排版纹理。而本实施例中,随着动画帧的不断增多,随着用户交互的不断增多,文字排版纹理的空间不断被占用,依然可以通过撤换使用频率低的文字来保证做到文字排版纹理无需切换(顶多是微小的局部更新)。除非是在极端情况下,用户交互输入的文字极其多,才会涉及纹理的切换,但是极端情况对于AE文字特效来说是极其小概率的事件。理论上,本实施例已经可以将纹理切换的概率降低到极小(容许局部更新)。
本实施例提出的位图渲染方法,可以针对AE文字特效的实际情况,通过一定的手段统一不同文字的尺寸,针对文字排版纹理进行局部更新,尽量降低文字改变引起的文字GPU渲染的纹理切换的频率,减少文字纹理数据GPU显存的冗余更新,并整合了文字类的碎片数据,进一步优先处理了常用的文字,达到提升文字GPU渲染效率的目的。在用户交互时,文字切换越是频繁,GPU渲染效率的提升潜力越大。
实施例二
如图5所示,为本申请第三实施例提出一种电子装置20的硬件架构示意图。本实施例中,所述电子装置20可包括,但不仅限于,可通过系统总线相互通信连接的存储器21、处理器22、网络接口23。需要指出的是,图5仅示出了具有组件21-23的电子装置20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
所述存储器21至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器21可以是所述电子装置20的内部存储单元,例如该电子装置20的硬盘或内存。在另一些实施例中,所述存储器21也可以是所述电子装置20的外部存储设备,例如该电子装置20上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器21还可以既包括所述电子装置20的内部存储单元也包括其外部存储设备。本实施例中,所述存储器21通常用于存储安装于所述电子装置20的操作系统和各类应用软件,例如位图渲染系统60的程序代码等。此外,所述存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制所述电子装置20的总体操作。本实施例中,所述处理器22用于运行所述存储器21中存储的程序代码或者处理数据,例如运行所述位图渲染系统60等。
所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述电子装置20与其他电子设备之间建立通信连接。
实施例三
如图6所示,为本申请第三实施例提出一种位图渲染系统60的模块示意图。所述位图渲染系统60可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例各程序模块的功能。
在本实施例中,所述位图渲染系统60包括:
获取模块602,用于获取当前动画帧的位图的原始数据。
所述位图主要是指文字位图,也可以适用于小图标的位图。本实施例主要是指AE文字特效的位图渲染场景,小图标位图的处理方法与文字类似。首先在文字特效的位图渲染方式实施场景中,基于当前动画帧的文字ID从FreeType库中获取到相应的文字位图原始数据,所述原始数据包括文字的原始位图的颜色信息、尺寸等。不同文字的原始尺寸是不一样的。
建立模块604,用于根据所述原始数据和所述统一尺寸建立文字排版纹理和文字信息映射表。
优选地,在建立排版纹理和信息映射表之前,首先需要设置位图数据块的统一尺寸。
在本实施例中,在文字位图的原始尺寸基础上,需要进行尺寸的统一。具体而言,根据经验值(存储在服务端,需要时进行查询,可以设置一个自由度,也可以在代码中设定固定值)和当前动画帧文字的最大尺寸取较大值,设定为文字数据块的统一尺寸,并更新服务端的所述经验值。所述统一尺寸是为了方便在后续建立和更新文字排版纹理时,进行文字数据块的拼接。
在统一文字数据块的尺寸之后,按照预设尺寸建立文字排版纹理。在本实施例中,可以建立1024*1024的文字排版纹理。然后按照文字数据块的统一尺寸进行分割、排版和编号。所述文字排版纹理是指将很多个文字放在一起的一个GPU纹理图,其中包括多个文字数据块,每个文字数据块具有统一尺寸(例如60*60),所述多个文字数据块拼接在一起组成所述文字排版纹理,并且每个所述文字数据块在所述文字排版纹理中具有唯一的索引编号。所述1024*1024的尺寸是考虑到兼容Android低端机器的经验值。
在本实施例中,可以将所有帧的所有文字存在一个文字信息映射表中。所述文字信息映射表中包含了每个文字的文字ID(针对位图即为位图标识)、所述原始数据、使用次数、是否在所述文字排版纹理中、在所述文字排版纹理中的编号、是否为当前动画帧的文字等信息。并且,根据所述文字排版纹理的尺寸和所述文字数据块的统一尺寸,以及所述文字的编号,可以计算出该文字所在的文字数据块在所述文字排版纹理中的位置坐标。另外,根据该文字对应的文字位图的所述原始数据(原始尺寸),还可以计算出所述文字位图在所述文字排版纹理中的实际坐标(由于所述文字数据块的统一尺寸是取的最大尺寸,而所述文字位图的原始尺寸可能较小,因此所述文字位图的实际坐标可能与所述文字数据块的位置坐标不一致)。这些信息都可以记录在所述文字信息映射表中。
值得注意的是,所述文字信息映射表中记录有每个文字的使用频率。因此这里有一个实践上的自由度,对于使用频率低且不在所述文字排版纹理中的文字可以暂时不统计进入所述文字信息映射表,相当于当作没有使用过。
更新模块606,用于将所述当前动画帧的位图的颜色信息局部更新至所述排版纹理。
在文字排版纹理建立以后,可以将当前动画帧的文字的数据信息更新到文字排版纹理中。在本实施例中,具体是将该文字的颜色信息更新到所述文字排版纹理中。
值得注意的是,在更新文字的数据信息时,对所述文字排版纹理来说,是一种局部更新。也就是说,每个动画帧只更新没出现过的新文字。另外,在所述文字排版纹理中,出现过的文字也有可能因为当前没有使用、使用频率过低或文字排版纹理空间不足等多个因素被替换。
在新的动画关键帧到来之前,只需要根据现有的所述文字排版纹理来进行文字采样和渲染就可以了,并不需要进行采样纹理的切换。
在新的动画关键帧到来的时候或者用户通过交互方式输入新文字的时候,首先会根据文字ID在所述文字信息映射表中进行查询。如果所述文字排版纹理中已有该文字,那么可以直接根据所述文字排版纹理来进行文字采样和渲染,同时在所述文字信息映射表中更新一下相应文字的使用次数。如果在所述文字信息映射表中没有找到该文字,表示该文字是新的文字,需要将该文字的原始数据(颜色信息)通过局部更新的方式更新到所述文字排版纹理中,并且同步更新所述文字信息映射表。
另外,针对特殊情况的考虑,随着动画关键帧的增多和用户输入文字的增多,可能会遇到因所述文字排版纹理的尺寸不足导致的新文字无法更新的问题。这时候需要根据所述文字信息映射表中的文字使用次数来撤换使用次数低的文字,这样就可以继续将新文字更新到所述文字排版纹理中。
渲染模块608,用于根据更新后的所述排版纹理进行特效的渲染。
最后,可以将更新后的所述文字排版纹理提交至GPU中,根据更新后的所述文字排版纹理进行文字特效的GPU渲染。
本实施例提出的位图渲染系统,可以针对AE文字特效的实际情况,通过一定的手段统一不同文字的尺寸,针对文字排版纹理进行局部更新,尽量降低文字改变引起的文字GPU渲染的纹理切换的频率,减少文字纹理数据GPU显存的冗余更新,并整合了文字类的碎片数据,进一步优先处理了常用的文字,达到提升文字GPU渲染效率的目的。在用户交互时,文字切换越是频繁,GPU渲染效率的提升潜力越大。
实施例四
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有文字渲染程序,所述文字渲染程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的文字渲染方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请实施例的优选实施例,并非因此限制本申请实施例的专利范围,凡是利用本申请实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请实施例的专利保护范围内。
Claims (13)
1.一种位图渲染方法,其特征在于,所述方法包括:
获取当前动画帧的位图的原始数据;
建立排版纹理和信息映射表;
将所述当前动画帧的位图的颜色信息局部更新至所述排版纹理;
根据更新后的所述排版纹理进行特效的渲染。
2.根据权利要求1所述的位图渲染方法,其特征在于,所述获取当前动画帧的位图的原始数据包括:
从字体引擎库中获取当前动画帧的原始位图的颜色信息、尺寸信息。
3.根据权利要求1或2所述的位图渲染方法,其特征在于,所述方法在所述建立排版纹理和信息映射表之前还包括:
设置位图数据块的统一尺寸,根据所述原始数据和所述统一尺寸执行所述建立排版纹理和信息映射表的步骤。
4.根据权利要求3所述的位图渲染方法,其特征在于,所述设置位图数据块的统一尺寸包括:
根据当前动画帧所述原始数据中每个位图的尺寸信息计算最大尺寸;
从服务端查询预设的经验值;
从所述经验值和所述最大尺寸中取较大值,设置为所述位图数据块的统一尺寸。
5.根据权利要求4所述的位图渲染方法,其特征在于,所述设置位图数据块的统一尺寸还包括:
根据所设置的所述统一尺寸更新所述服务端的所述经验值。
6.根据权利要求3至5任一项所述的位图渲染方法,其特征在于,所述建立排版纹理包括:
按照预设尺寸建立排版纹理,并按照所述位图数据块的所述统一尺寸进行分割、排版和编号。
7.根据权利要求1至6任一项所述的位图渲染方法,其特征在于,所述信息映射表中的信息包括每个位图的位图标识、所述原始数据、使用次数、是否在所述排版纹理中、在所述排版纹理中的编号、是否为当前动画帧的位图。
8.根据权利要求1至7任一项所述的位图渲染方法,其特征在于,所述将所述当前动画帧的位图的颜色信息局部更新至所述排版纹理包括:
根据位图标识从所述信息映射表中查询当前位图是否存在;
若所述当前位图已存在,则在所述信息映射表中更新所述当前位图的使用次数;
若所述当前位图不存在,则将所述当前位图的颜色信息局部更新至所述排版纹理中,同时更新所述信息映射表。
9.根据权利要求8所述的位图渲染方法,其特征在于,所述将所述当前位图的颜色信息局部更新至所述排版纹理中包括:
判断所述排版纹理的剩余空间是否充足;
若剩余空间充足,则直接将所述当前位图的颜色信息局部更新至所述排版纹理中;
若剩余空间不充足,则通过撤换所述排版纹理中使用次数最低的位图,将所述当前位图的颜色信息更新至所述排版纹理中。
10.根据权利要求1至9任一项所述的位图渲染方法,其特征在于,所述位图包括文字位图或小图标位图。
11.一种位图渲染系统,其特征在于,所述系统包括:
获取模块,用于获取当前动画帧的位图的原始数据;
建立模块,用于建立排版纹理和信息映射表;
更新模块,用于将所述当前动画帧的位图的颜色信息局部更新至所述排版纹理;
渲染模块,用于根据更新后的所述排版纹理进行特效的渲染。
12.一种电子装置,其特征在于,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的位图渲染程序,所述位图渲染程序被所述处理器执行时实现如权利要求1至10中任一项所述的位图渲染方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有位图渲染程序,所述位图渲染程序被处理器执行时实现如权利要求1至10中任一项所述的位图渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111332699.8A CN113920223A (zh) | 2021-11-11 | 2021-11-11 | 位图渲染方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111332699.8A CN113920223A (zh) | 2021-11-11 | 2021-11-11 | 位图渲染方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113920223A true CN113920223A (zh) | 2022-01-11 |
Family
ID=79246160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111332699.8A Pending CN113920223A (zh) | 2021-11-11 | 2021-11-11 | 位图渲染方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113920223A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114721763A (zh) * | 2022-05-18 | 2022-07-08 | 北京汇金春华科技有限公司 | 文字渲染方法及相关设备 |
-
2021
- 2021-11-11 CN CN202111332699.8A patent/CN113920223A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114721763A (zh) * | 2022-05-18 | 2022-07-08 | 北京汇金春华科技有限公司 | 文字渲染方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111666123B (zh) | 页面主题控制方法、系统和计算机设备 | |
CN102789372B (zh) | 一种打印方法及装置 | |
CN107807967B (zh) | 实时推荐方法、电子设备及计算机可读存储介质 | |
CN108205960B (zh) | 一种文字渲染的方法和装置、电子地图制作系统及导航系统 | |
CN112035111A (zh) | 页面编辑方法、系统、计算机设备与计算机可读存储介质 | |
CN110969004B (zh) | 图文自动排版方法及系统、服务器及介质 | |
CN108446110B (zh) | Lua脚本生成方法、装置、终端及计算机可读介质 | |
CN113920223A (zh) | 位图渲染方法及系统 | |
CN116401407A (zh) | 思维导图的节点属性配置方法、装置、设备和存储介质 | |
CN101464986A (zh) | 一种创建广告位的方法、系统及装置 | |
CN105159673A (zh) | 一种设置控件样式的方法和装置 | |
CN111325012A (zh) | word报表生成方法与系统 | |
CN111221517A (zh) | 一种模型创建方法、装置、计算机设备和可读存储介质 | |
CN111899311A (zh) | 元素渲染方法、装置、存储介质和计算机设备 | |
CN115618838A (zh) | 报告生成方法及设备 | |
CN115713572A (zh) | 文本图像生成方法、装置、电子设备及可读存储介质 | |
CN114895942A (zh) | 应用换肤方法、装置、设备及存储介质 | |
CN112685078A (zh) | 接口文档生成与查询方法、装置及计算机可读存储介质 | |
CN113743056A (zh) | 基于段落缩进量的文档转换方法、计算设备及存储介质 | |
CN113535206A (zh) | 多版本代码升级方法及系统 | |
CN111079399A (zh) | 图文数据处理方法、装置、计算机设备和存储介质 | |
CN113672565B (zh) | 一种文件标记方法、装置、电子设备及存储介质 | |
CN112052571B (zh) | 电力设备的仿真方法、装置及存储介质 | |
CN115934068B (zh) | 数据统计页面的生成方法、显示方法、服务器及移动终端 | |
CN115756443B (zh) | 一种脚本生成方法、装置、电子设备及可读存储介质 |
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 |