CN110874856A - 一种基于gpu特性的实时渲染gui的优化方法 - Google Patents

一种基于gpu特性的实时渲染gui的优化方法 Download PDF

Info

Publication number
CN110874856A
CN110874856A CN201911102678.XA CN201911102678A CN110874856A CN 110874856 A CN110874856 A CN 110874856A CN 201911102678 A CN201911102678 A CN 201911102678A CN 110874856 A CN110874856 A CN 110874856A
Authority
CN
China
Prior art keywords
vertex
information
real
area
function
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
Application number
CN201911102678.XA
Other languages
English (en)
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.)
Guangzhou Yinhan Technology Co Ltd
Original Assignee
Guangzhou Yinhan Technology Co Ltd
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 Guangzhou Yinhan Technology Co Ltd filed Critical Guangzhou Yinhan Technology Co Ltd
Priority to CN201911102678.XA priority Critical patent/CN110874856A/zh
Publication of CN110874856A publication Critical patent/CN110874856A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明公开一种基于GPU特性的实时渲染GUI的优化方法,预先创建两张N*N的纹理,一般来说N=1024或2048,把UI设计出的原始图片,动态的映射到这两张运行时纹理上,动态的迭入迭出;所有的UI再进行绘制的时候,均通过这该两张纹理来进行绘制。本发明中,设计师无需关注每一个小的图片元素应该归属于哪个图集,把真正的精力放在GUI的设计上,从而真正的发挥美术设计师擅长的领域,提高工作效率,与Unity等商业引擎不同的是,不仅仅是去掉图集这个概念,而是从真正的实现上去掉图集。

Description

一种基于GPU特性的实时渲染GUI的优化方法
技术领域
本发明涉及计算机图形学、网络游戏、实时可视化UI交互技术领域,特别是涉及一种基于GPU特性的实时渲染GUI的优化方法。
背景技术
图形化界面(Graphic User Interface,以下简称GUI)在人们的生活中起到了至关重要的作用,从windows时代开始,大量的图形化操作就涌入了人们的视野并逐步渗透到人们生活的方方面面,而实时而又丰富的表现带给人们很好的用于体验,对于使用在游戏中的用户界面,则是一款游戏不可缺少的组成的部分。一般来说,GUI界面的开发过程如下:首先美术构思,并将真正的图片绘制出来。其次是,程序将大量的原始图片按照一定的规则进行组织,在适当的时机进行绘制。
但,在实际的操作中,必然会遇到以下几个问题,而这两点也是GUI系统的重点和难点:
1.随着项目的迭代,越来越多的图片被制作出来,资源量变大。
2.在绘制时需要进行批次的控制(使用相同的渲染状态绘制一定数量的图元,如纹理相同),越少的批次意味着越高的执行效率。
在传统的实现方法中,为了解决批次问题,往往采用的是图集的方案,将同时展现的图片元素放在一起,组成一张大的图片,再进行绘制,然而实际的过程中,UI设计师往往难以驾驭项目后期产生的大量的UI元素,不仅花费大量的时间进行图片的组织和布局的调整,然而也很难达到完美解决批次减低到效果。
使用图集的另外的一个弊端是图集中很多不需要的图片元素也随之一起加载,越大的图片意味着更多的内存消耗。在现代的游戏当中,往往对质量,尤其是GUI的质量都是非常高的,一张1024*1024的图片就要占去4M内存,而往往实际是同时用到几张。
综上所述,图集方案带来的缺陷如下:
1.渲染批次优化不够彻底,同时依赖图集组织,甚至是业务逻辑;
2.设计师时时刻刻都要有图集的概念,而组织大量的图片元素的过程限制设计师发挥;
3.工艺制作流程复杂,因为受到批次限制,设计师与程序员之间需要做大量沟通以调优,浪费在其中的时间成本不计其数。
在一些通用的商业引擎中,如Unity和UE,已经开始认识到图集带给设计师的困扰,开始将图集的概念进行隐藏,但在工程导出为实际产品时,依然会以图集的方式进行工作,仅在一定程度上减轻了GUI设计师的设计负担。
发明内容
本发明的目的是提供一种基于GPU特性的实时渲染GUI的优化方法,以解决上述问题。
为实现上述目的,本发明提供了一种基于GPU特性的实时渲染GUI的优化方法,包括:
预先创建两张N*N的纹理,一般来说N=1024或2048,把UI设计出的原始图片,动态的映射到这两张运行时纹理上,动态的迭入迭出;所有的UI再进行绘制的时候,均通过这该两张纹理来进行绘制;
上述过程中,将美术设计师的若干散图片,通过矩形填充算法填充到运行时纹理;
其中,所述矩形填充算法的图形结构为一颗三叉树,树节点如下:
节点信息
{
已经占用的区域
可用区域1(节点信息)
可用区域2(节点信息)
可用区域3(节点信息)
}
在向大纹理去查找可用的纹理区域时,需要查找叶子节点,即可用区域1、2、3,如果找到,那么填充该节点的占用区域信息,同时将该节点划分为已占用区域和可用区域,递归实现为一颗三叉树,完成纹理内容的填充;在已占用的区域内,重新划分已占用区域,可用区域1、2、3,依次类推。
进一步地,在上述过程中,运行时图集需要美术做好原始图集的切分,采用九宫格划分方式,运行时图集就容纳更多的图片,通过监控需要同时绘制散图片是否将运行时图集填满并溢出,如果出现这种情况,则需要检查散图片是否做好正确的划分,并重复该过程,重新切分图片。
进一步地,在映射过程中,与原有的正方形图形同步,将图片的顶点预生成,以减少图片的绘制面积。
进一步地,在映射过程中,需要对图片进行定位,在图形识别以及顶点定位过程中,往往产生顶点扭曲或偏移,产生图形错误,不能够准确定位,因此,在若干个区域内先后插入图形点,图形点与填充的图形组合插入,通过在同一区域内的三个图形点,确定基准顶点,则相应的图形码以此为基准进行排列,在同一区域内设定Z个区域段,在Z各区域段内设定三个图形点。图形点也可设置为移动式的,所述顶点确定模块根据每个顶点信息进行设定,设定每个区域段大小的灰度值E,通过将不同灰度值与相应的顶点Q对应,实时获取的图像图谱灰度值信息为E,预设顶点Q0对应的图像图谱灰度值信息为E0,将实际灰度值E与预设灰度值E0进行比较,获得实际顶点Qi。
进一步地,设定对应的灰度值与顶点值按照预设的正相关关系进行确定,基于该算法得出对应的一组相对顶点信息;在确定获取每个定位点的顶点信息时,首先获取满足图像图谱灰度值信息为E0最接近的第一顶点Q1、第二顶点Q2、第三顶点Q3,通过该三个顶点获取可能的第一顶点Q(Qx,Qy)。
进一步地,在获取实时顶点信息时,获取每个相对顶点信息的x轴方向参量QiX=Qix cos(ai),ai表示对应的每个相对顶点Qi信息在坐标系中沿x轴方向的夹角,Qix sin(ai)表示对应的每个相对顶点Qi信息在坐标系中沿x轴方向的投影长度,分别为a1、a2、a3,可能的第一顶点Q(Qx,Qy)中,实时x轴顶点为Qx=(Q1x+Q2x+Q3x)/3。
进一步地,获取每个相对顶点信息的y轴方向参量Qiy=Qix sin(ai),ai表示对应的每个相对顶点Qi信息在坐标系中沿y轴方向的夹角,Qix sin(ai)表示对应的每个相对顶点Qi信息在坐标系中沿y轴方向的投影长度;分别为a1、a2、a3,因此,实时y轴顶点为Qy=(Q1y+Q2y+Q3y)/3。
进一步地,定位点的数量设置为三个,所述顶点确定模块设定其中一基础顶点函数N,根据预先顶点的图形整理而得,将当前顶点函数信息与所述基础顶点函数的图形信息进行对比,
Figure BDA0002270320610000041
其中,
Figure BDA0002270320610000042
表示顶点函数信息与所述基础顶点函数的图形信息进行对比值,Mi表示第i基础图形库的图形量,也即选择的对应的顶点信息的数量,Nj表示某现有顶点的图形信息的顶点函数,Uij表基础顶点函数图形信息与第i基础图形库的相关度,i表示基础顶点函数的编号,d表示修复系数,d的取值为0.997;|A|表示顶点函数A的修复值,由于在运算过程中,产生图形转换,将人才函数A的修复值作为考虑因素。
进一步地,确定基本顶点修复函数A0(L0,v0,W0),当前顶点函数信息的顶点修复函数A(L,v,W);顶点函数A的修复值:
|A|=(L/L0+v/v0+W/W0)/4
其中,L表示表示的当前原始图形块顶点长度,L0表示预设的原始图形块顶点长度,v表示真实图像的平均灰度值,v0表示真实图像的预设灰度值,W表示真实顶点的分割区域数量,W0表示预设的真实顶点的分割区域数量。本实施例通过对原始图形、真实顶点的特性进行一定程度的修复,使得顶点选择更加准确。
与现有技术相比本发明提供的基于GPU特性的实时渲染GUI的优化方法具有以下优点:
1.去掉图集,设计师无需关注每一个小的图片元素应该归属于哪个图集,把真正的精力放在GUI的设计上,从而真正的发挥美术设计师擅长的领域,提高工作效率。与Unity等商业引擎不同的是,不仅仅是去掉图集这个概念,而是从真正的实现上去掉图集。
2.完美的解决内存问题,真正的做到使用到的图集元素才被加载并送往显卡绘制,不相关的图片元素都不加载,并且实现动态的加载和卸载,保持GUI使用到的内存在可以控制的范围内。同时采用压缩方案,一些内存容量较小的手持设备也可以很好运行。
3.完美解决批次问题,使用两张动态创建的纹理(运行时纹理)来容纳正在使用的纹理,动态迭入和迭出,理论上可以在一个批次绘制完所有的UI内容。
具体而言,对于当代的GUI系统来说,质量的要求非常高,然而高质量和内存占用、解码之间是需要综合考虑的。目前各个主流厂商的GPU都对ASTC有比较好的支持,本发明使用ASTC4X4压缩格式将散图片进行压缩,实际的运行时纹理也采用同样的压缩格式创建,该格式是基于Block的压缩格式,在更新运行时纹理是,也可以采用Block的方式进行更新。这样做的好处是进一步的降低了内存,且去掉了解码所带来的开销,在实际测试中,尤其是在DPI较高的手持设备上,几乎看不出有质量的损失。
具体而言,关于图形缓存(Vertex Buffer,以下简称VB)和索引缓存(IndexBuffer,以下简称IB),GUI系统中,为了适应批次尽可能少的需要,图形变换处理都是在CPU侧处理完毕,再一起更新到GPU上,一个GUI系统往往只有一个缓存。那么界面变化带来的缓存更新和图形计算的开销就成为一个值得注意的话题。一个非常容易理解的方案是做一定级别的缓存:界面无变化,则没有图形的计算;当所有的界面都不变化的时候,图形缓存不做更新。在比较复杂的GUI界面结构下,我们需要做一定的策略,这部分我们将在具体的实施方式中进一步讨论。
具体而言,文字作为GUI系统的主要一部分,往往使用矢量字生成文字图片,再进行绘制,而生成的文字图片,我们依然可以通过动态图集技术来进行拼合。在实际的实施中,将图片做运行时图集,将文字也单独做成图集,绘制UI时,一个批次绘制所有图片元素,一个批次绘制所有文字。需要注意将文字的图形缓存组织在图片元素的末尾。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本发明实施例的矩形算法填充的当前状态描述图;
图1b为本发明实施例的矩形算法填充的区域3占用的进一步划分描述图;
图2为本发明实施例的采用运行时图集之后内存的对比;
图3为本发明实施例的采用运行时图集之后批次的对比;
图4为本发明实施例的PolygonVertex图形示例;
图5为本发明实施例的图形图形的组织层级结构。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参阅图1所示,其为本发明实施例提供的基于GPU特性的实时渲染GUI的优化方法的示意图,该过程包括:
预先创建两张N*N的纹理,一般来说N=1024或2048,在实际运行时,把UI设计师设计出的原始图片,动态的映射到这两张运行时纹理上,动态的迭入迭出;所有的UI再进行绘制的时候,均通过这该两张纹理来进行绘制。上述过程采用动态图集技术,将传统工艺中的图集去除的基础,传统工艺中的图集,也可以称之为离线图集,本实施例中,采用动态图集,可对应的称谓运行时图集。
在该过程中,具体过程为:
步骤a,将美术设计师的若干散图片,通过矩形填充算法填充到运行时纹理;本实施例的矩形填充算法为,参阅图1a所示,其为本发明实施例的矩形算法填充的当前状态描述图;图1b为本发明实施例的矩形算法填充的区域3占用的进一步划分描述图。
图形结构为一颗三叉树,树节点如下:
节点信息
{
已经占用的区域
可用区域1(节点信息)
可用区域2(节点信息)
可用区域3(节点信息)
}
在向大纹理去查找可用的纹理区域时,需要查找叶子节点,即可用区域1、2、3,如果找到,那么填充该节点的占用区域信息,同时将该节点划分为已占用区域和可用区域,递归实现为一颗三叉树,完成纹理内容的填充;在已占用的区域内,重新划分已占用区域,可用区域1、2、3,依次类推。
在上述过程中,运行时图集需要美术做好原始图集的切分,采用九宫格划分方式,运行时图集就容纳更多的图片,通过监控需要同时绘制散图片是否将运行时图集填满并溢出,如果出现这种情况,则需要检查散图片是否做好正确的划分,并重复该过程,重新切分图片。
在映射过程中,与原有的正方形图形同步,将图片的顶点预生成,这样就减少了这个图片的绘制面积,如果该图片包含有大量像素的空白区域,那么该算法带来的效益将更加客观,在UI中,往往使用大量的图标、Logo等不规则图片,在实际中得到很好的应用,可以看到,处理以增加少部分VS阶段的处理开销,换取了大量PS阶段的减少。
具体而言,在映射过程中,需要对图片进行定位,在图形识别以及顶点定位过程中,往往产生顶点扭曲或偏移,产生图形错误,不能够准确定位,因此,在若干个区域内先后插入图形点,图形点与填充的图形组合插入,通过在同一区域内的三个图形点,确定基准顶点,则相应的图形码以此为基准进行排列,在同一区域内设定Z个区域段,在Z各区域段内设定三个图形点。图形点也可设置为移动式的,所述顶点确定模块根据每个顶点信息进行设定,设定每个区域段大小的灰度值E,通过将不同灰度值与相应的顶点Q对应,实时获取的图像图谱灰度值信息为E,预设顶点Q0对应的图像图谱灰度值信息为E0,将实际灰度值E与预设灰度值E0进行比较,获得实际顶点Qi。
在本实施例中,设定对应的灰度值与顶点值按照预设的正相关关系进行确定,基于该算法得出对应的一组相对顶点信息;在确定获取每个定位点的顶点信息时,首先获取满足图像图谱灰度值信息为E0最接近的第一顶点Q1、第二顶点Q2、第三顶点Q3,通过该三个顶点获取可能的第一顶点Q(Qx,Qy),在获取实时顶点信息时,获取每个相对顶点信息的x轴方向参量QiX=Qix cos(ai),ai表示对应的每个相对顶点Qi信息在坐标系中沿x轴方向的夹角,Qix sin(ai)表示对应的每个相对顶点Qi信息在坐标系中沿x轴方向的投影长度,分别为a1、a2、a3,因此,可能的第一顶点Q(Qx,Qy)中,实时x轴顶点为Qx=(Q1x+Q2x+Q3x)/3。获取每个相对顶点信息的y轴方向参量Qiy=Qix sin(ai),ai表示对应的每个相对顶点Qi信息在坐标系中沿y轴方向的夹角,Qix sin(ai)表示对应的每个相对顶点Qi信息在坐标系中沿y轴方向的投影长度;分别为a1、a2、a3,因此,实时y轴顶点为Qy=(Q1y+Q2y+Q3y)/3。因此,可能的第一定位顶点Q(Qx,Qy)信息能够确定,也即能够确定潜在定位点的顶点。
本实施例通过上述计算方法获取基于每个区域段的图像灰度与顶点对应关系,获取i个可能顶点点,i表示序号,根据实际真实图像单元的数量而定,每个顶点点的坐标表达为Qi(Qix,Qiy)。本实施例中,定位点的数量设置为三个,数量过少,产生定位误差,数量过多,图形重复比较,图形定位验证时间大大延长。因此,需对i个顶点进行选择,确定最优三个顶点,所述顶点确定模块设定其中一基础顶点函数N,根据预先顶点的图形整理而得,将当前顶点函数信息与所述基础顶点函数的图形信息进行对比,
Figure BDA0002270320610000101
其中,
Figure BDA0002270320610000102
表示顶点函数信息与所述基础顶点函数的图形信息进行对比值,Mi表示第i基础图形库的图形量,也即选择的对应的顶点信息的数量,Nj表示某现有顶点的图形信息的顶点函数,Uij表基础顶点函数图形信息与第i基础图形库的相关度,i表示基础顶点函数的编号,d表示修复系数,d的取值为0.997;|A|表示顶点函数A的修复值,由于在运算过程中,产生图形转换,将人才函数A的修复值作为考虑因素。在本实施例中,还包括顶点修复模块,其确定基本顶点修复函数A0(L0,v0,W0),当前顶点函数信息的顶点修复函数A(L,v,W);顶点函数A的修复值:
|A|=(L/L0+v/v0+W/W0)/4
其中,L表示表示的当前原始图形块顶点长度,L0表示预设的原始图形块顶点长度,v表示真实图像的平均灰度值,v0表示真实图像的预设灰度值,W表示真实顶点的分割区域数量,W0表示预设的真实顶点的分割区域数量。本实施例通过对原始图形、真实顶点的特性进行一定程度的修复,使得顶点选择更加准确。
具体而言,在本发明实施例中,图形信息与程序员的编码信息对应,每个图形均通过对应的代码进行对应,每个图形定点数设定数据-图像矩阵f,每个顶点对应的数据编码、编号、顶点位置均能够建立,以使得图形与程序编码能过一一对应。
相较于大图片填充的过程,对比离线图集方案,离线图集是加载一张大图片并传输到GPU,而大图片中的很多面积都是实际绘制使用中利用不到的,这样造成的加载和传输的额外开销,小图片则在加载和传输的过程中的量很小,性能有所提升,在实际的使用图形中也证明了这一点。
参阅图2所示,其为本发明实施例的采用运行时图集之后内存的对比;在使用离线图集的时候,往往不能精准的识别使用到的图片,一个布局往往会加载多张离线图集,而仅仅使用图集中的一小部分,造成了内存浪费,而运行时纹理的方式,则是“精准识别”用到的图片,大大降低内存。
参阅图3所示,其为本发明实施例的采用运行时图集之后批次的对比;本身运行时图集的作用就可以非常有效的处理批次问题,运行时图集也是需要美术做好原始图集的切分,包括九宫格的使用,只有这样,原始图片的规格才会小,那么运行时图集就可以容纳更多的图片,通过监控需要同时绘制散图片是否将运行时图集填满并溢出,如果出现这种情况,则需要检查散图片是否做好正确的划分。一些比较大的图片,则不需要放到运行时图集中,而是直接做单独的绘制处理。
参阅图4所示,其为本发明实施例的PolygonVertex图形示例;与原有的正方形图形图形同步,将图片的图形图形预生成,这样就减少了这个图片的绘制面积,如果该图片包含有大量像素的空白区域,那么该算法带来的效益将更加客观,在UI中,往往使用大量的图标、Logo等不规则图片,在实际中得到很好的应用,可以看到,处理以增加少部分VS阶段的处理开销,换取了大量PS阶段的减少。
参阅图5所示,其为本发明实施例的图形图形的组织层级结构,GUI使用两个全局缓存,一个是用于静态界面,另一个则是用于变动的元素。这样做主要是减少缓存的刷新量以减少开销。对于相对静态的界面来说,给每个根窗口一个图形缓存,如果该窗口的图形有变化,那么只进行该窗口的图形重新组织,最后与其它根窗口的缓存一起同步到全局缓存中,这样做也是为了减少图形刷新带来的开销。
步骤b,在两张纹理一个批次绘制,采用纹理混合的方式,实际内容是使用的其中一张纹理;
散图片的规格限制,以防超出两张运行时纹理;
考虑散图片更新到运行时图集的效率,小图片快速加载快速更新;
上述技术方案中,动态图集取代静态图集,不仅减轻美术设计师组织图集的负担,减少批次,还可以预见内存方面的好处,精准的加载和使用需要渲染的小块纹理,避免了离线图集方案中将整张图集都加载进内存,再进行解码的开销。而采用离线图集无法精准识别出所用到的散图片,必然带来额外图片面积的加载,实际情况是,一个GUI布局中往往会引用多张离线图集。UI是一个OverDraw非常严重的系统,在大多数的界面都需要使用不同的图片反复绘制,又因为没有深度缓存的原因,所以也会产生一定的开销。在一定程度上减少绘制面积,也是提高效率的一个因素。
本实施例所描述的情况,则是将PolygonVertex技术应用到GUI散图的打包流程中来,像素级拾取有效的绘制面积,生成多边形网格,减少渲染管线中像素着色阶段的压力。
具体而言,对于当代的GUI系统来说,质量的要求非常高,然而高质量和内存占用、解码之间是需要综合考虑的。目前各个主流厂商的GPU都对ASTC有比较好的支持,本发明使用ASTC4X4压缩格式将散图片进行压缩,实际的运行时纹理也采用同样的压缩格式创建,该格式是基于Block的压缩格式,在更新运行时纹理是,也可以采用Block的方式进行更新。这样做的好处是进一步的降低了内存,且去掉了解码所带来的开销,在实际测试中,尤其是在DPI较高的手持设备上,几乎看不出有质量的损失。
具体而言,关于图形缓存(Vertex Buffer,以下简称VB)和索引缓存(IndexBuffer,以下简称IB),GUI系统中,为了适应批次尽可能少的需要,图形变换处理都是在CPU侧处理完毕,再一起更新到GPU上,一个GUI系统往往只有一个缓存。那么界面变化带来的缓存更新和图形计算的开销就成为一个值得注意的话题。一个非常容易理解的方案是做一定级别的缓存:界面无变化,则没有图形的计算;当所有的界面都不变化的时候,图形缓存不做更新。在比较复杂的GUI界面结构下,我们需要做一定的策略,这部分我们将在具体的实施方式中进一步讨论。
具体而言,文字作为GUI系统的主要一部分,往往使用矢量字生成文字图片,再进行绘制,而生成的文字图片,我们依然可以通过动态图集技术来进行拼合。在实际的实施中,将图片做运行时图集,将文字也单独做成图集,绘制UI时,一个批次绘制所有图片元素,一个批次绘制所有文字。需要注意将文字的图形缓存组织在图片元素的末尾。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

Claims (9)

1.一种基于GPU特性的实时渲染GUI的优化方法,其特征在于,包括:
预先创建两张N*N的纹理,一般来说N=1024或2048,把UI设计出的原始图片,动态的映射到这两张运行时纹理上,动态的迭入迭出;所有的UI再进行绘制的时候,均通过这该两张纹理来进行绘制;
上述过程中,将美术设计师的若干散图片,通过矩形填充算法填充到运行时纹理;
其中,所述矩形填充算法的图形结构为一颗三叉树,树节点如下:
节点信息
{
已经占用的区域
可用区域1(节点信息)
可用区域2(节点信息)
可用区域3(节点信息)
}
在向大纹理去查找可用的纹理区域时,需要查找叶子节点,即可用区域1、2、3,如果找到,那么填充该节点的占用区域信息,同时将该节点划分为已占用区域和可用区域,递归实现为一颗三叉树,完成纹理内容的填充;在已占用的区域内,重新划分已占用区域,可用区域1、2、3,依次类推。
2.根据权利要求1所述的基于GPU特性的实时渲染GUI的优化方法,其特征在于,在上述过程中,运行时图集需要美术做好原始图集的切分,采用九宫格划分方式,运行时图集就容纳更多的图片,通过监控需要同时绘制散图片是否将运行时图集填满并溢出,如果出现这种情况,则需要检查散图片是否做好正确的划分,并重复该过程,重新切分图片。
3.根据权利要求1所述的基于GPU特性的实时渲染GUI的优化方法,其特征在于,在映射过程中,与原有的正方形图形同步,将图片的顶点预生成,以减少图片的绘制面积。
4.根据权利要求3所述的基于GPU特性的实时渲染GUI的优化方法,其特征在于,在映射过程中,需要对图片进行定位,在图形识别以及顶点定位过程中,往往产生顶点扭曲或偏移,产生图形错误,不能够准确定位,因此,在若干个区域内先后插入图形点,图形点与填充的图形组合插入,通过在同一区域内的三个图形点,确定基准顶点,则相应的图形码以此为基准进行排列,在同一区域内设定Z个区域段,在Z各区域段内设定三个图形点。图形点也可设置为移动式的,所述顶点确定模块根据每个顶点信息进行设定,设定每个区域段大小的灰度值E,通过将不同灰度值与相应的顶点Q对应,实时获取的图像图谱灰度值信息为E,预设顶点Q0对应的图像图谱灰度值信息为E0,将实际灰度值E与预设灰度值E0进行比较,获得实际顶点Qi。
5.根据权利要求4所述的基于GPU特性的实时渲染GUI的优化方法,其特征在于,设定对应的灰度值与顶点值按照预设的正相关关系进行确定,基于该算法得出对应的一组相对顶点信息;在确定获取每个定位点的顶点信息时,首先获取满足图像图谱灰度值信息为E0最接近的第一顶点Q1、第二顶点Q2、第三顶点Q3,通过该三个顶点获取可能的第一顶点Q(Qx,Qy)。
6.根据权利要求5所述的基于GPU特性的实时渲染GUI的优化方法,其特征在于,在获取实时顶点信息时,获取每个相对顶点信息的x轴方向参量QiX=Qix cos(ai),ai表示对应的每个相对顶点Qi信息在坐标系中沿x轴方向的夹角,Qix sin(ai)表示对应的每个相对顶点Qi信息在坐标系中沿x轴方向的投影长度,分别为a1、a2、a3,可能的第一顶点Q(Qx,Qy)中,实时x轴顶点为Qx=(Q1x+Q2x+Q3x)/3。
7.根据权利要求6所述的基于GPU特性的实时渲染GUI的优化方法,其特征在于,获取每个相对顶点信息的y轴方向参量Qiy=Qix sin(ai),ai表示对应的每个相对顶点Qi信息在坐标系中沿y轴方向的夹角,Qix sin(ai)表示对应的每个相对顶点Qi信息在坐标系中沿y轴方向的投影长度;分别为a1、a2、a3,因此,实时y轴顶点为Qy=(Q1y+Q2y+Q3y)/3。
8.根据权利要求6所述的基于GPU特性的实时渲染GUI的优化方法,其特征在于,定位点的数量设置为三个,所述顶点确定模块设定其中一基础顶点函数N,根据预先顶点的图形整理而得,将当前顶点函数信息与所述基础顶点函数的图形信息进行对比,
Figure FDA0002270320600000031
其中,
Figure FDA0002270320600000032
表示顶点函数信息与所述基础顶点函数的图形信息进行对比值,Mi表示第i基础图形库的图形量,也即选择的对应的顶点信息的数量,Nj表示某现有顶点的图形信息的顶点函数,Uij表基础顶点函数图形信息与第i基础图形库的相关度,i表示基础顶点函数的编号,d表示修复系数,d的取值为0.997;|A|表示顶点函数A的修复值,由于在运算过程中,产生图形转换,将人才函数A的修复值作为考虑因素。
9.根据权利要求6所述的基于GPU特性的实时渲染GUI的优化方法,其特征在于,确定基本顶点修复函数A0(L0,v0,W0),当前顶点函数信息的顶点修复函数A(L,v,W);顶点函数A的修复值:
|A|=(L/L0+v/v0+W/W0)/4
其中,L表示表示的当前原始图形块顶点长度,L0表示预设的原始图形块顶点长度,v表示真实图像的平均灰度值,v0表示真实图像的预设灰度值,W表示真实顶点的分割区域数量,W0表示预设的真实顶点的分割区域数量。本实施例通过对原始图形、真实顶点的特性进行一定程度的修复,使得顶点选择更加准确。
CN201911102678.XA 2019-11-12 2019-11-12 一种基于gpu特性的实时渲染gui的优化方法 Pending CN110874856A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911102678.XA CN110874856A (zh) 2019-11-12 2019-11-12 一种基于gpu特性的实时渲染gui的优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911102678.XA CN110874856A (zh) 2019-11-12 2019-11-12 一种基于gpu特性的实时渲染gui的优化方法

Publications (1)

Publication Number Publication Date
CN110874856A true CN110874856A (zh) 2020-03-10

Family

ID=69717923

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911102678.XA Pending CN110874856A (zh) 2019-11-12 2019-11-12 一种基于gpu特性的实时渲染gui的优化方法

Country Status (1)

Country Link
CN (1) CN110874856A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667234A (zh) * 2020-12-22 2021-04-16 完美世界(北京)软件科技发展有限公司 一种渲染管线的创建方法、装置、存储介质及计算设备
CN112767419A (zh) * 2021-01-29 2021-05-07 福建天晴在线互动科技有限公司 一种图集九宫格切割的方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104751494A (zh) * 2015-04-27 2015-07-01 国家电网公司 一种OpenGL超大纹理的处理和绘制方法
CN105094920A (zh) * 2015-08-14 2015-11-25 网易(杭州)网络有限公司 一种游戏渲染方法和装置
GB2546286A (en) * 2016-01-13 2017-07-19 Sony Interactive Entertainment Inc Apparatus and method of image rendering
CN107463398A (zh) * 2017-07-21 2017-12-12 腾讯科技(深圳)有限公司 游戏渲染方法、装置、存储设备及终端

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104751494A (zh) * 2015-04-27 2015-07-01 国家电网公司 一种OpenGL超大纹理的处理和绘制方法
CN105094920A (zh) * 2015-08-14 2015-11-25 网易(杭州)网络有限公司 一种游戏渲染方法和装置
GB2546286A (en) * 2016-01-13 2017-07-19 Sony Interactive Entertainment Inc Apparatus and method of image rendering
CN107463398A (zh) * 2017-07-21 2017-12-12 腾讯科技(深圳)有限公司 游戏渲染方法、装置、存储设备及终端

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
NXSHOW: "【unity】动态图集 dynamic atlas (runtime atlas)", 《HTTPS://BLOG.CSDN.NET/NXSHOW/ARTICLE/DETAILS/90724350》 *
王晓坤: "基于无人机倾斜影像的三维模型纹理映射方法研究", 《中国优秀硕士学位论文全文数据库 基础科技辑》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667234A (zh) * 2020-12-22 2021-04-16 完美世界(北京)软件科技发展有限公司 一种渲染管线的创建方法、装置、存储介质及计算设备
CN112767419A (zh) * 2021-01-29 2021-05-07 福建天晴在线互动科技有限公司 一种图集九宫格切割的方法及系统
CN112767419B (zh) * 2021-01-29 2024-01-30 福建天晴在线互动科技有限公司 一种图集九宫格切割的方法及系统

Similar Documents

Publication Publication Date Title
CN109840931B (zh) 骨骼动画的合批渲染方法、装置、系统及存储介质
CN112381918A (zh) 图像渲染方法、装置、计算机设备和存储介质
US20230053462A1 (en) Image rendering method and apparatus, device, medium, and computer program product
US8345059B2 (en) Methods, systems, and data structures for generating a rasterizer
CN111340928B (zh) 一种结合光线跟踪的Web端实时混合渲染方法、装置及计算机设备
US8725466B2 (en) System and method for hybrid solid and surface modeling for computer-aided design environments
US20110285719A1 (en) Approximation of stroked higher-order curved segments by quadratic bèzier curve segments
CN113628314B (zh) 一种虚幻引擎中摄影测量模型的可视化方法、装置和设备
CN113112579A (zh) 渲染方法、装置、电子设备和计算机可读存储介质
CN110728616A (zh) 图形处理单元内处理核心的图块分配
CN110874856A (zh) 一种基于gpu特性的实时渲染gui的优化方法
WO2013148732A1 (en) Post tesellation edge cache
CN112070909A (zh) 一种基于3D Tiles的工程三维模型LOD输出方法
CN112037117A (zh) 用于运行高性能gpu应用的方法、装置及计算机存储介质
CN111091620A (zh) 基于图形学的地图动态路网处理方法及系统、计算机设备
CN112419430B (zh) 动画播放方法、装置及计算机设备
EP4379647A1 (en) Render format selection method and device related thereto
CN114247138B (zh) 图像渲染方法、装置、设备及存储介质
CN115861510A (zh) 对象渲染方法、装置、电子设备、存储介质及程序产品
CN114494623A (zh) 基于lod的地形渲染方法及装置
CN112083865B (zh) 图像生成方法和装置、终端和可读存储介质
US8988444B2 (en) System and method for configuring graphics register data and recording medium
CN101145246A (zh) 一种产生体积阴影的方法及系统
CN117197300B (zh) 一种基于透明通道的三维线框透视动图的渲染合成方法
CN115588070B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20200310

RJ01 Rejection of invention patent application after publication