利用纹理排料方式优化显存空间的方法技术

技术编号:7736041 阅读:216 留言:0更新日期:2012-09-09 17:26
本发明专利技术公开了一种利用纹理排料方式优化显存空间的方法,将OpenGL?ES中的部分三维渲染函数封装成一个图形引擎库,图形引擎库中的每个对象对应一个显存空间用于存储所绘制的纹理内容;获取对象纹理空间的步骤包括:a.申请符合绑定成纹理的大小的显存空间并绑定成纹理;b.根据对象的大小从已经绑定成纹理的显存空间中获取一个矩形区域,矩形区域不能和已经被别的对象占用的区域重叠;c.每个对象对应一个显存空间内的一个矩形区域用于存储所绘制的纹理内容。本发明专利技术将一个显存空间分配为多个矩形区域,每个矩形区域均对应一个对象,并存储该对象的纹理内容,大大提高了显存空间的利用率。

【技术实现步骤摘要】

本专利技术涉及电子领域,尤其涉及一种。
技术介绍
OpenGL (Open Graphics Library,开放的图形程序函数)是一个调用方便的底层图形库,用于二维(2D)或者三维(3D)图像。OpenGLES(OpenGL for Embedded Systems)由桌面 OpenGL 子集组成,是 OpenGL 三维图形 API (Application Programming Interface,调用程序编程函数)的子集,针对手机、PDA和游戏主机等嵌入式设备而设计,它创造了软件与图形加速之间的底层交互函数。OpenGL ES等三维渲染技术广泛应用于嵌入式软件的开发过程,用于满足数字娱乐产品对绘图、动画等图形进行渲染的需求,使得数字娱乐产品具有三维展示效果和三维用户界面。但是,利用OpenGL对图像进行三维操作需要绑定成纹理才行,OpenGL中能绑定成纹理的显存空间大小只能是ZnXZni (O10,0^m^ 10,21°= 1024),在实际中不可能每张图片的大小都是2nX2m的。如果不是2nX2m的大小的纹理,需要给它绑定一个长宽都不小于它的2nX2m显存空间才可以产生出可用的纹理空间,因此浪费了比较大的空间。
技术实现思路
本专利技术主要解决的技术问题是提供一种,提闻显存空间的利用率。为解决上述技术问题,本专利技术采用的一个技术方案是提供一种,将OpenGL ES中的部分三维渲染函数封装成一个图形引擎库,所述图形引擎库中的每个对象对应一个显存空间用于存储所绘制的纹理内容;获取对象纹理空间的步骤包括a.申请符合绑定成纹理的大小的显存空间并绑定成纹理;b.根据对象的大小从已经绑定成纹理的显存空间中获取一个矩形区域,所述矩形区域不能和已经被别的对象占用的区域重叠;c.每个对象对应一个显存空间内的一个矩形区域用于存储所绘制的纹理内容。其中,删除对象纹理空间的步骤包括a.获取一个临时的显存空间;b.将需要删除的对象所在的显存空间中的内容全部拷贝到临时显存空间内;c.把在这个显存空间上的其他对象根据它们的大小重排所属的矩形区域;d.排列完成后从临时显存空间中把属于各个对象的纹理内容拷贝回去。其中,所述的每个对象对应的一个显存空间的大小为1024X1024。其中,在获取一个大小是wXh(0彡w彡1024,0 ^ h ^ 1024)的对象所用的矩形区域时,可以把它模型化成是一个wXh的矩形零件;所述显存空间内的矩形区域的排列遵循最低水平线法。其中,所述的最低水平线法包括以下步骤(I)每当要排入一个矩形件时,如果长或者宽大于1024转(8),否则选序号为index = O的纹理空间板块;(2)在序号为index的纹理空间板块的最高轮廓线上选取最低的一段水平线,如果有若干段,则选取最左边的那段;(3)如果纹理空间板块的高度小于轮廓线的高度加矩形零件的高度则转(5),否贝U,将该矩形件在此位置排放;如果该段线的宽度大于要排入矩形件的宽度,更新最高轮廓线,转(7);否则转(4);(4)查询与最低水平线段相邻的左、右几段水平线,将最低水平线提升至与之相邻且高度较低的一段平齐,同时更新最高轮廓线,转(7); (5)该纹理板块中找不到可以排矩形区域,index加I,如果存在序号为index的纹理空间板块则转(2),否则转(6);(6)申请一个1024X1024的显存空间并绑定成纹理,板块的序号为index,如果申请失败转(8),否则转(2);(7)得到一个矩形区域,结束;(8)得到矩形区域失败,结束。本专利技术的有益效果是区别于现有技术的纹理渲染中针对不是2nX2m的大小的纹理,需要给它绑定一个长宽都不小于它的2nX2m显存空间才可以产生出可用的纹理空间,因此浪费了比较大的空间,本专利技术通过将一个对象对应的一个显存空间进行细化分配,将一个显存空间分配为多个矩形区域,每个矩形区域均对应一个对象,并存储该对象的纹理内容,大大提闻了显存空间的利用率。进一步地,本专利技术还通过设置一个临时显存空间,并利用这个临时显存空间来恢复经过删除一个矩形区域后的显存空间内的纹理内容,使得删除任意一个矩形区域内的纹理内容均不会影响显存空间内其它矩形区域内的纹理内容,方便可靠。附图说明图I是本专利技术中获取对象纹理空间的步骤流程图;图2是本专利技术中删除对象纹理空间的步骤流程图;图3是本专利技术的一个纹理空间的最低水平线法处理过程示意图。具体实施例方式为详细说明本专利技术的
技术实现思路
、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。请参阅图1,本专利技术,将OpenGL ES中的部分三维渲染函数封装成一个图形引擎库,所述图形引擎库中的每个对象对应一个显存空间用于存储所绘制的纹理内容;获取对象纹理空间的步骤包括a.申请符合绑定成纹理的大小的显存空间并绑定成纹理;b.根据对象的大小从已经绑定成纹理的显存空间中获取一个矩形区域,所述矩形区域不能和已经被别的对象占用的区域重叠;c.每个对象对应一个显存空间内的一个矩形区域用于存储所绘制的纹理内容。本专利技术通过将一个对象对应的一个显存空间进行细化分配,将一个显存空间分配为多个矩形区域,每个矩形区域均对应一个对象,并存储一个对象的纹理内容,大大提高了显存空间的利用率。 请参阅图2,本专利技术的删除对象纹理空间的步骤包括a.获取一个临时的显存空间;b.将需要删除的对象所在的显存空间中的内容全部拷贝到临时显存空间内;c.把在这个显存空间上的其他对象根据它们的大小重排所属的矩形区域;d.排列完成后从临时显存空间中把属于各个对象的纹理内容拷贝回去。本专利技术还通过设置一个临时显存空间,并利用这个临时显存空间来恢复经过删除一个矩形区域后的显存空间内的纹理内容,使得删除任意一个矩形区域内的纹理内容均不会影响显存空间内其它矩形区域内的纹理内容,方便可靠。上述的每个对象对应的一个显存空间的大小为1024X1024。在获取一个大小是wXh (O彡w彡1024,O ^ h ^ 1024)的对象所用的矩形区域时,可以把它模型化成是一个wXh的矩形零件;所述显存空间内的矩形区域的排列遵循最低水平线法。上述的最低水平线法包括以下步骤(I)每当要排入一个矩形件时,如果长或者宽大于1024转(8),否则选序号为index = O的纹理空间板块;(2)在序号为index的纹理空间板块的最高轮廓线上选取最低的一段水平线,如果有若干段,则选取最左边的那段;(3)如果纹理空间板块的高度小于轮廓线的高度加矩形零件的高度则转(5),否贝U,将该矩形件在此位置排放;如果该段线的宽度大于要排入矩形件的宽度,更新最高轮廓线,转(7);否则转(4);(4)查询与最低水平线段相邻的左、右几段水平线,将最低水平线提升至与之相邻且高度较低的一段平齐,同时更新最高轮廓线,转(7);(5)该纹理板块中找不到可以排矩形区域,index加1,如果存在序号为index的纹理空间板块则转(2),否则转(6);(6)申请一个1024X1024的显存空间并绑定成纹理,板块的序号为index,如果申请失败转(8),否则转(2);(7)得到一个矩形区域,结束;(8)得到矩形区域失败,结束。下面,以一个优选的具体实施例来说明本专利技术的实现方式根据数字娱乐设备的需要,把OpenGL ES中的部分三维渲染函数封装本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.ー种利用纹理排料方式优化显存空间的方法,将OpenGL ES中的部分三维渲染函数封装成一个图形引擎库,所述图形引擎库中的每个对象对应ー个显存空间用于存储所绘制的纹理内容; 其特征在于,获取对象纹理空间的步骤包括 a.申请符合绑定成纹理的大小的显存空间并绑定成纹理; b.根据对象的大小从已经绑定成纹理的显存空间中获取ー个矩形区域,所述矩形区域不能和已经被别的对象占用的区域重叠; c.每个对象对应ー个显存空间内的ー个矩形区域用于存储所绘制的纹理内容。2.根据权利要求I所述的利用纹理排料方式优化显存空间的方法,其特征在于删除对象纹理空间的步骤包括 a.获取ー个临时的显存空间; b.将需要删除的对象所在的显存空间中的内容全部拷贝到临时显存空间内; c.把在这个显存空间上的其他对象根据它们的大小重排所属的矩形区域; d.排列完成后从临时显存空间中把属于各个对象的纹理内容拷贝回去。3.根据权利要求I或2所述的利用纹理排料方式优化显存空间的方法,其特征在于,所述的每个对象对应的一个显存空间的大小为1024X 1024。4.根据权利要求3所述的利用纹理排料方式优化显存空间的方法,其特征在于,在获取ー个大小是wXh(0 < w, h < 1...

【专利技术属性】
技术研发人员:汤周文
申请(专利权)人:福建星网视易信息系统有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1