创建纹理图集和纹理图集等待集合的方法、装置和设备与流程

文档序号:11288520阅读:191来源:国知局
创建纹理图集和纹理图集等待集合的方法、装置和设备与流程

【技术领域】

本发明涉及计算机应用技术领域,特别涉及一种创建纹理图集和纹理图集等待集合的方法、装置和设备。



背景技术:

纹理是一种重要的视觉效果,在计算机图形学中的纹理既包括通常意义上物体表面所呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案。图形引擎在实现每一帧图像的渲染时,需要针对每一帧图像包含的若干图像数据都创建纹理。在为每个图像数据分配显存空间时,出于提高性能等原因,需要分配超过图片尺寸且是最小的2的幂次的尺寸,这就会造成严重的显存浪费。

为了减少纹理对显存空间的浪费,可以将纹理拼合成一个大的纹理图,称为纹理图集(textureatlas)。使用纹理图集将所有图像一次性进行处理,既能够节省显存,又能够提升渲染速度。

目前,图形引擎在创建纹理图集时,通常采用的都是静态纹理图集,即采用固定尺寸的纹理图集,该纹理图集的尺寸通常是2的幂次。然而,如果采用的静态纹理图集的尺寸过大,则在很多场景下一帧中的所有图像数据并不能占满纹理图集,会造成显存的浪费。但如果采用的静态纹理图集的尺寸过小,则可能存在纹理图集盛装不下一帧中的所有图像数据,剩余的图像数据只能采用非纹理图集的方式,即采用普通纹理的方式进行渲染,这就会造成渲染命令过多,渲染性能下降。



技术实现要素:

有鉴于此,本发明提供了一种创建纹理图集和创建纹理图集等待集合的 方法、装置和设备,尽可能的节约显存,提高渲染性能。

具体技术方案如下:

本发明提供了一种创建纹理图集的方法,该方法包括:

获取待渲染数据帧所包含的图像数据;

依据获取的图像数据的尺寸,确定需创建的纹理图集尺寸;

依据确定出的尺寸,创建纹理图集。

根据本发明一优选实施方式,所述获取待渲染数据帧所包含的图像数据包括:

从待渲染数据帧所包含的图像数据中,获取需要加入纹理图集的图像数据。

根据本发明一优选实施方式,所述获取需要加入纹理图集的图像数据包括:

将尺寸小于或等于预设尺寸阈值的图像数据,确定为需要加入纹理图集的图像数据。

根据本发明一优选实施方式,该方法还包括:

从待渲染数据帧所包含的图像数据中,获取不需要加入纹理图集的图像数据;

针对所述不需要加入纹理图集的图像数据,创建纹理。

根据本发明一优选实施方式,该方法还包括:将获取的图像数据放入纹理图集等待集合;

所述依据获取的图像数据的尺寸,确定需创建的纹理图集尺寸包括:依据所述纹理图集等待集合所包含的图像数据的尺寸,确定需创建的纹理图集的尺寸。

根据本发明一优选实施方式,在将所述需要加入纹理图集的图像数据放入纹理图集等待集合时,针对各需要加入纹理图集的图像数据分别执行:判断是否存在已有的纹理图集等待集合能够容纳当前图像数据,如果是,则将当前图像数据放入该已有的纹理图集等待集合;否则,创建新的纹理图集等待集合,将当前图像数据放入该新的纹理图集等待集合;

所述创建纹理图集包括:针对各纹理图集等待集合分别创建纹理图集。

根据本发明一优选实施方式,所述判断是否存在已有的纹理图集等待集合能够容纳当前图像数据包括:

若已有的纹理图集等待集合被放入当前图像数据后,该已有的纹理图集等待集合所包含的图像数据的尺寸未超过预设的最大容量,则确定该已有的纹理图集等待集合能够容纳当前图像数据。

根据本发明一优选实施方式,在创建纹理图集之后,该方法还包括:

删除该纹理图集对应的纹理图集等待集合。

根据本发明一优选实施方式,所述确定需创建的纹理图集尺寸包括:

依据预设的纹理合并算法,确定所需要的纹理图集尺寸。

根据本发明一优选实施方式,所述确定所需要的纹理图集尺寸包括:

确定所需要的最小纹理图集尺寸,确定出的纹理图集尺寸为2的幂次。

根据本发明一优选实施方式,所述创建纹理图集包括:

创建纹理图集对象;

依据所述确定出的尺寸,申请所述纹理图集对象的显存空间;

将获取的图像数据上传至所述纹理图集对象的显存空间。

根据本发明一优选实施方式,该方法还包括:确定需创建的纹理图集所包含各图像数据的纹理坐标;

所述创建纹理图集包括:设置纹理图集所包含各图像数据的纹理坐标。

根据本发明一优选实施方式,该方法还包括:

利用创建的纹理图集,进行所述数据帧中图像的渲染。

本发明还提供了一种创建纹理图集的装置,该装置包括:

图像获取单元,用于获取待渲染数据帧所包含的图像数据;

尺寸确定单元,用于依据获取的图像数据的尺寸,确定需创建的纹理图集尺寸;

图集创建单元,用于依据确定出的尺寸,创建纹理图集。

根据本发明一优选实施方式,所述图像获取单元,具体用于从待渲染数据帧所包含的图像数据中,获取需要加入纹理图集的图像数据。

根据本发明一优选实施方式,所述图像获取单元在获取需要加入纹理图集的图像数据时,具体执行:

将尺寸小于或等于预设尺寸阈值的图像数据,确定为需要加入纹理图集的图像数据。

根据本发明一优选实施方式,该装置还包括:纹理创建单元;

所述图像获取单元,还用于将所述待渲染数据帧所包含的图像数据中不需要加入纹理图集的图像数据提供给所述纹理创建单元;

所述纹理创建单元,用于针对所述不需要加入纹理图集的图像数据,创建纹理。

根据本发明一优选实施方式,该装置还包括:

集合维护单元,用于将获取的图像数据放入纹理图集等待集合;

所述尺寸确定单元,具体用于依据所述纹理图集等待集合所包含的图像数据的尺寸,确定需创建的纹理图集的尺寸。

根据本发明一优选实施方式,所述集合维护单元,具体用于针对各需要加入纹理图集的图像数据分别执行:判断是否存在已有的纹理图集等待集合能够容纳当前图像数据,如果是,则将当前图像数据放入该已有的纹理图集等待集合;否则,创建新的纹理图集等待集合,将当前图像数据放入该新的纹理图集等待集合;

所述图集创建单元针对各纹理图集等待集合分别创建纹理图集。

根据本发明一优选实施方式,所述集合维护单元在判断是否存在已有的纹理图集等待集合能够容纳当前图像数据时,具体执行:

若已有的纹理图集等待集合被放入当前图像数据后,该已有的纹理图集等待集合所包含的图像数据的尺寸未超过预设的最大容量,则确定该已有的纹理图集等待集合能够容纳当前图像数据。

根据本发明一优选实施方式,所述集合维护单元,还用于在所述图集创建单元创建纹理图集之后,删除该纹理图集对应的纹理图集等待集合。

根据本发明一优选实施方式,所述尺寸确定单元在确定需创建的纹理图集 尺寸时,具体执行:

依据预设的纹理合并算法,确定所需要的纹理图集尺寸。

根据本发明一优选实施方式,所述尺寸确定单元确定所需要的最小纹理图集尺寸,确定出的纹理图集尺寸为2的幂次。

根据本发明一优选实施方式,所述图集创建单元,具体用于:

创建纹理图集对象;

依据所述确定出的尺寸,申请所述纹理图集对象的显存空间;

将获取的图像数据上传至所述纹理图集对象的显存空间。

根据本发明一优选实施方式,所述尺寸确定单元,还用于确定需创建的纹理图集所包含各图像数据的纹理坐标;

所述图集创建单元在创建纹理图集时,还用于设置纹理图集所包含各图像数据的纹理坐标。

根据本发明一优选实施方式,该装置还包括:

渲染单元,用于利用创建的纹理图集,进行所述数据帧中图像的渲染。

本发明还提供了一种设备,包括

一个或者多个处理器;

存储器;

一个或者多个程序,所述一个或者多个程序存储在所述存储器中,被所述一个或者多个处理器执行以实现如下操作:

获取待渲染数据帧所包含的图像数据;

依据获取的图像数据的尺寸,确定需创建的纹理图集尺寸;

依据确定出的尺寸,创建纹理图集。

本发明提供了一种创建纹理图集等待集合的方法,该方法包括:

判断是否存在已有的纹理图集等待集合能够容纳需要加入纹理图集的当前图像数据,如果是,则将当前图像数据放入该已有的纹理图集等待集合;否则,创建新的纹理图集等待集合,将当前图像数据放入该新的纹理图集等待集合;

其中所述纹理图集等待集合用于确定需创建的纹理图集的尺寸。

根据本发明一优选实施方式,将待渲染数据帧所包含的图像数据中需要加入纹理图集的图像数据分别作为当前图像数据,执行所述方法。

根据本发明一优选实施方式,所述判断是否存在已有的纹理图集等待集合能够容纳当前图像数据包括:

若已有的纹理图集等待集合被放入当前图像数据后,该已有的纹理图集等待集合所包含的图像数据的尺寸未超过预设的最大容量,则确定该已有的纹理图集等待集合能够容纳当前图像数据。

根据本发明一优选实施方式,所述纹理图集等待集合还用于创建纹理图集;

该方法还包括:删除已创建纹理图集对应的纹理图集等待集合。

本发明还提供了一种创建纹理图集等待集合的装置,该装置包括:

判断单元,用于判断是否存在已有的纹理图集等待集合能够容纳需要加入纹理图集的当前图像数据;

维护单元,用于在所述判断单元的判断结果为是时,将当前图像数据放入该已有的纹理图集等待集合;在所述判断单元的判断结果为否时,创建新的纹理图集等待集合,将当前图像数据放入该新的纹理图集等待集合;

其中所述纹理图集等待集合用于确定需创建的纹理图集的尺寸。

根据本发明一优选实施方式,所述判断单元将待渲染数据帧所包含的图像数据中需要加入纹理图集的图像数据分别作为当前图像数据,执行所述判断的操作。

根据本发明一优选实施方式,所述判断单元,具体用于:若已有的纹理图集等待集合被放入当前图像数据后,该已有的纹理图集等待集合所包含的图像数据的尺寸未超过预设的最大容量,则确定该已有的纹理图集等待集合能够容纳当前图像数据。

根据本发明一优选实施方式,所述纹理图集等待集合还用于创建纹理图集;

所述维护单元,还用于删除已创建纹理图集对应的纹理图集等待集合。

本发明还提供了一种设备,包括

一个或者多个处理器;

存储器;

一个或者多个程序,所述一个或者多个程序存储在所述存储器中,被所述一个或者多个处理器执行以实现如下操作:

判断是否存在已有的纹理图集等待集合能够容纳需要加入纹理图集的当前图像数据,如果是,则将当前图像数据放入该已有的纹理图集等待集合;否则,创建新的纹理图集等待集合,将当前图像数据放入该新的纹理图集等待集合;

其中所述纹理图集等待集合用于确定需创建的纹理图集的尺寸。

由以上技术方案可以看出,本发明依据数据帧所包含的图像数据,确定需创建的纹理图集尺寸,以此创建纹理图集,也就是说,能够根据实际需求创建合理尺寸的纹理图集,这种动态纹理图集的方式相比较静态纹理图集的方式,更节约显存空间。同时,也能够避免出现因静态纹理图集容量有限而使剩余图像数据都采用非纹理图集的方式,减少了渲染命令,提高渲染性能。

【附图说明】

图1为本发明实施例提供的主要方法流程图;

图2为本发明实施例提供的一种优选方法流程图;

图3a~3c为本发明实施例提供的纹理图集等待集合的几种示意图;

图4为本发明实施例提供的装置结构图;

图5为本发明实施例提供的集合维护单元的结构示意图;

图6为本发明实施例提供的设备结构图。

【具体实施方式】

为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。

在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含 义。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。

图1为本发明实施例提供的主要方法流程图,如图1中所示,该方法可以主要包括以下步骤:

在101中,获取待渲染数据帧所包含的图像数据。

在每一个待渲染的数据帧中都可能会包含若干图像数据,例如某个待渲染的ui界面上存在一些icon(图标),每一个icon都是一个图像数据。在本步骤中首先从数据帧中获取各图像数据。

在本步骤中,可以从待渲染数据帧所包含的图像数据中,获取需要加入纹理图集的图像数据。具体地,可以将待渲染数据帧包含的各图像数据均认为是需要加入纹理图集的图像数据。但对于一些尺寸很大的图像数据,将其做成纹理图集是没有意义的,因此,存在一种优选的方式,即将待渲染数据帧所包含的图像数据中,尺寸小于或等于预设尺寸阈值的图像数据,确定为需要加入纹理图集的图像数据。

对于尺寸大于预设尺寸阈值的图像数据,则可以认为不需要加入纹理图集的图像数据。可以针对不需要加入纹理图集的图像数据创建普通纹理。

在102中,依据获取的图像数据的尺寸,确定需创建的纹理图集尺寸。

在本步骤中,可以将需要加入纹理图集的图像数据放入纹理图集等待集合,然后通过统计纹理图集等待集合所包含的图像数据的尺寸的方式,采用预设的 纹理合并算法,确定需创建的纹理图集尺寸。

其中,针对一个数据帧可以建立一个纹理图集等待集合,也可以建立多个纹理图集等待集合。每个纹理图集等待集合可以设置最大容量,若一个纹理图集等待集合被占满,则一个数据帧中剩余的图像数据可以放入另一个纹理图集等待集合。

另外,由于纹理图集等待集合占用内存,为了尽量降低对内存的占用,不同数据帧中的图像数据也可以共享一个等待集合。

因此针对需要加入纹理图集的各图像数据可以分别执行以下处理:若已有的纹理图集等待集合可容纳当前图像,则将该当前图像放入该已有的纹理图集等待集合;否则,创建一个新的纹理图集等待集合,将当前图像数据放入该新的纹理图集等待集合。这样就能够尽可能的减少各纹理图集等待集合的空余量,节约内存。

其中,在判断已有纹理图集等待集合是否可容纳当前图像时,可以判断该已有纹理图集等待集合被放入当前图像数据后,是否超过预设的最大容量,如果是,则认为该已有纹理图集不可容纳当前图像数据;否则可以认为已有纹理图集能够容纳当前图像数据。

在103中,依据确定出的尺寸,创建纹理图集。

在本步骤中,如果仅存在一个纹理图集等待集合,则针对该纹理图集等待集合创建纹理图集;如果存在多个纹理图集等待集合,则可以针对各纹理图集等待集合分别创建纹理图集。

其中创建纹理图集可以包括纹理图集对象的创建,显存空间的申请以及纹理图集所包含各图像数据的纹理坐标设置。具体将在后续实施例中详细描述。

在完成纹理图集的创建后,该纹理图集所对应的纹理图集等待集合可以被删除,以释放其对内存空间的占用。

下面结合图2所示实施例对上述方法进行详细描述。图2为本发明实施例提供的一种优选方法流程图,如图2中所示,该方法可以具体包括以下步骤:

在201中,从待渲染数据帧中获取图像数据,针对各图像数据分别执行以 下步骤:

在202中,判断该图像数据的尺寸是否小于或等于预设的尺寸阈值,如果是,执行204;否则执行203。

纹理图集的目的是为了减少各图像数据自成纹理对显存空间的浪费,特别是尺寸较小的图像数据。但对于尺寸本身就很大的图像数据,将其放入纹理图集后,可能就几乎将纹理图集占满,因此达到一定尺寸的图像数据就不需要放入纹理图集。在本步骤中可以预先设置一个尺寸阈值,如果图像数据的尺寸大于该尺寸阈值,则认为该图像数据无需放入纹理图集。该尺寸阈值可以采用经验值,例如采用512像素作为尺寸阈值,也可以向用户提供接口,接受用户通过该接口对尺寸阈值的设置。

在203中,针对该图像数据创建纹理,结束对该图像数据的处理。

对于尺寸较大的图像数据,可以将其创建为纹理,创建普通纹理的过程主要是,将其作为一个单独的纹理对象,申请显存空间并上传该图像数据至显存空间。该部分内容可以采用现有创建普通纹理的方式,在此不再详述。

在204中,判断是否存在已有的纹理图集等待集合能够容纳当前图像数据,如果是,则执行205。否则,执行206。

本实施例中采用了一种优选的实施方式,由于纹理图集在创建之前,需要依据需要放入该纹理图集的图像数据的尺寸进行计算,因此会将图像数据放入纹理图集等待集合,一个纹理图集等待集合对应一个纹理图集,即在后续步骤中,会针对各纹理图集等待集合分别创建纹理图集对象。

纹理图集等待集合是存在于内存中的。为了尽可能的节约内存,在本实施例中尽可能将纹理图集等待集合占满。一个数据帧中的图像数据可能仅需要一个纹理图集等待集合即可,但也可能需要占用多个纹理图集等待集合(通常纹理图集等待集合是存在最大容量即容量上限的),另一方面,多个数据帧中的图像数据也可以共享一个纹理图集等待集合。

在本步骤中若已有的纹理图集等待集合被放入该图像数据后,该已有的纹理图集等待集合所包含的图像数据的尺寸仍未超过预设的最大容量,则可以确 定该已有的纹理图集等待集合能够容纳该图像数据;否则,不能够容纳该图像数据。

在205中,将该图像数据作为子纹理放入该已有的纹理图集等待集合。待该纹理图集等待集合被占满后,针对该纹理图集等待集合执行207。

在206中,创建一个新的纹理图集等待集合,将该图像数据作为子纹理放入该新的纹理图集等待集合。待该纹理图集等待集合被占满后,针对该纹理图集等待集合执行207。

举几个例子:

例1、如图3a中所示,假设数据帧1的图像数据已放入了纹理图集等待集合1,但该纹理图集等待集合1并未占满。当对数据帧2获取图像数据后,针对获取的图像数据可以首先判断该纹理图集等待集合1是否能够容纳该图像数据,如果是,可以将该图像数据放入纹理图集等待集合1中。放入后如果纹理图集等待集合1已满,则可以针对该纹理图集等待集合1执行后续步骤进行纹理图集对象的创建。

例2、获取数据帧2中的图像数据后,不存在已有的纹理图集等待集合能够容纳该图像数据,如图3b中所示,假设纹理图集等待集合1已满,则可以创建新的纹理图集等待集合2,将数据2中的图像数据放入纹理图集等待集合2。

例3、接续例2,假设在将数据帧2中的图像数据放入纹理图集等待集合2的过程中,有的图像数据因尺寸问题无法放入纹理图集等待集合2中,那么可以创建新的纹理图集等待集合3,如图3c中所示,将图像数据放入纹理图集等待集合3中。如果后续有较小尺寸的图像数据能够放入纹理图集等待集合2,还可以放入纹理图集等待集合2。

在本发明实施例中,以纹理图集等待集合已满作为触发针对该纹理图集等待集合的纹理图集创建。除了这种方式之外,也可以周期性地触发针对各纹理图集等待集合分别创建纹理图集。另外,当完成纹理图集的创建后,内存中对应的纹理图集等待集合会被删除。

需要说明的是,本发明实施例中涉及到的纹理图集等待集合“已满”并不 意味着一定是没有剩余空间,也可以指剩余空间小于预设空间阈值,或者剩余空间占纹理图集等待集合总空间的比例小于预设比例阈值,等等。

在207中,根据该纹理图集等待集合所包含的子纹理(即图像数据)的尺寸,采用预设的纹理合并算法,确定所需要的纹理图集尺寸,以及纹理图集所包含各子纹理的纹理坐标。

在确定出要加入纹理图集的子纹理后,就可以根据要加入纹理图集的子纹理的尺寸,计算出所需要的纹理图集尺寸以及各子纹理的纹理坐标。采用的纹理合并算法可以是任意的方法,本发明并不加以限制。目前已有的纹理合并算法目标主要是,如何在纹理图集中布局子纹理,使最终的纹理图集能够尽可能少的占用显存。诸如可以采用maxrects算法、guillotine算法、skyline算法等二维图像排列算法来实现纹理合并。在纹理合并算法的实现过程中,可以确定出各子纹理的位置,即各子纹理的纹理坐标。

另外,目前大都数的设备支持的纹理以及纹理图集的大小都是2的幂次,因此,在实施例中确定出的纹理图集尺寸可以是2的幂次,例如128×64,64×32,等等。当然,对于有些设备能够支持非2的幂次大小的纹理图集,确定出的纹理图集尺寸也可以不是2的幂次。

在208中,针对该纹理图集等待集合创建纹理图集对象,依据207中确定出的尺寸,申请该纹理图集对象的显存空间。

针对每一个纹理图集集合创建一个纹理图集对象,该纹理图集对象最终在显存中会对应一个纹理图集,该纹理图集需要包含各子纹理,因此需要依据计算出的纹理图集尺寸申请该纹理图集对象的显存空间。例如,可以通过调用opengles命令集中的glteximage2d函数来申请纹理图集对象的显存空间,并通过该函数的参数对纹理图集对象的显存空间(即纹理图集的大小)进行定义。

在209中,将该纹理图集等待集合所包含的子纹理上传至纹理图集对象的显存空间,并设置各子纹理的纹理坐标。

例如可以通过opengles命令集中的gltexsubimage2d函数上传子纹理的数据,并依据在207得到的各子纹理的纹理坐标进行各子纹理的纹理坐标设置。 子纹理的纹理坐标指示该子纹理在纹理图集中的位置,使得再进行图像的渲染时,能够依据纹理坐标快速找到子纹理。

在210中,利用创建的纹理图集,进行上述数据帧中图像的渲染。

上述方法的执行主体可以为纹理图集创建装置,该装置可以是位于本地终端的应用,或者还可以为位于本地终端的应用中的插件或软件开发工具包(softwaredevelopmentkit,sdk)等功能单元,其中应用可以是系统级应用,也可以是用户级应用。或者,该装置还可以位于服务器端,本发明实施例对此不进行特别限定。下面结合图4对上述的纹理图集创建装置进行详细描述。

图4为本发明实施例提供的装置结构图,如图4中所示,该装置可以包括:图像获取单元01、尺寸确定单元02和图集创建单元03,还可以进一步包括:纹理创建单元04、集合维护单元05和渲染单元06。各组成单元的主要功能如下:

图像获取单元01负责获取待渲染数据帧所包含的图像数据。具体地,图像获取单元01可以从待渲染数据帧所包含的图像数据中,获取需要加入纹理图集的图像数据。具体地,可以将待渲染数据帧包含的各图像数据均认为是需要加入纹理图集的图像数据。但对于一些尺寸很大的图像数据,将其做成纹理图集是没有意义的,因此,存在一种优选的方式,即将待渲染数据帧所包含的图像数据中,尺寸小于或等于预设尺寸阈值的图像数据,确定为需要加入纹理图集的图像数据。

对于待渲染数据帧所包含的图像数据中不需要加入纹理图集的图像数据,图像获取单元01可以将其提供给纹理创建单元04,由纹理创建单元04针对不需要加入纹理图集的图像数据,创建纹理。创建普通纹理的过程主要是,将其作为一个单独的纹理对象,申请显存空间并上传该图像数据至显存空间。该部分内容可以采用现有创建普通纹理的方式,在此不再详述。

尺寸确定单元02负责依据获取的图像数据的尺寸,确定需创建的纹理图集尺寸。具体地,可以依据预设的纹理合并算法,确定所需要的纹理图集尺寸,以及纹理图集所包含各图像数据的纹理坐标。采用的纹理合并算法可以是任意 的方法,本发明并不加以限制。目前已有的纹理合并算法目标主要是,如何在纹理图集中布局子纹理,使最终的纹理图集能够尽可能少的占用显存。另外,目前大都数的设备支持的纹理以及纹理图集的大小都是2的幂次,因此,在实施例中确定出的纹理图集尺寸可以是2的幂次,例如128×64,64×32,等等。当然,对于有些设备能够支持非2的幂次大小的纹理图集,确定出的纹理图集尺寸也可以不是2的幂次。

为了统计需要加入纹理图集的图像数据的尺寸,在本发明实施例中可以由集合维护单元05将需要加入纹理图集的图像数据放入纹理图集等待集合。再由尺寸确定单元02依据纹理图集等待集合所包含的图像数据的尺寸,确定需创建的纹理图集的尺寸。

纹理图集等待集合是存在于内存中的。为了尽可能的节约内存,在本实施例中尽可能将纹理图集等待集合占满。一个数据帧中的图像数据可能仅需要一个纹理图集等待集合即可,但也可能需要占用多个纹理图集等待集合(通常纹理图集等待集合是存在最大容量即容量上限的),另一方面,多个数据帧中的图像数据也可以共享一个纹理图集等待集合。

具体地,集合维护单元05可以针对各需要加入纹理图集的图像数据分别执行:判断是否存在已有的纹理图集等待集合能够容纳当前图像数据,如果是,则将当前图像数据放入该已有的纹理图集等待集合;否则,创建新的纹理图集等待集合,将当前图像数据放入该新的纹理图集等待集合。

其中,若已有的纹理图集等待集合被放入当前图像数据后,该已有的纹理图集等待集合所包含的图像数据的尺寸未超过预设的最大容量,则集合维护单元05可以确定该已有的纹理图集等待集合能够容纳当前图像数据。

图集创建单元03负责依据确定出的尺寸,创建纹理图集。具体地,图集创建单元03可以针对各纹理图集等待集合分别创建纹理图集。

图集创建单元03在创建纹理图集时,可以具体执行:创建纹理图集对象;依据确定出的尺寸,申请纹理图集对象的显存空间;将获取的图像数据上传至纹理图集对象的显存空间,并设置纹理图集所包含各图像数据的纹理坐标。

在图集创建单元03创建纹理图集之后,集合维护单元05删除该纹理图集对应的纹理图集等待集合,及时释放内存并避免重复进行纹理图集的创建。

渲染单元06负责利用创建的纹理图集,进行数据帧中图像的渲染。

图5为上述集合维护单元的结构示意图,如图5中所示,该集合维护单元可以具体包括:判断单元11和维护单元12。

判断单元11负责判断是否存在已有的纹理图集等待集合能够容纳需要加入纹理图集的当前图像数据。具体地,若已有的纹理图集等待集合被放入当前图像数据后,该已有的纹理图集等待集合所包含的图像数据的尺寸未超过预设的最大容量,则判断单元11可以确定该已有的纹理图集等待集合能够容纳当前图像数据。

维护单元12负责在判断单元11的判断结果为是时,将当前图像数据放入该已有的纹理图集等待集合;在判断单元11的判断结果为否时,创建新的纹理图集等待集合,将当前图像数据放入该新的纹理图集等待集合。其中纹理图集等待集合用于确定需创建的纹理图集的尺寸。

具体地,判断单元11可以将待渲染数据帧所包含的图像数据中需要加入纹理图集的图像数据分别作为当前图像数据,执行上述判断的操作。

另外,纹理图集等待集合还可以用于创建纹理图集,例如针对各纹理图集等待集合分别创建纹理图集。维护单元12可以删除已创建纹理图集对应的纹理图集等待集合。

本发明实施例提供的上述方法和装置可以以设置并运行于设备中的计算机程序体现。该设备可以包括一个或多个处理器,还包括存储器和一个或多个程序,如图6中所示。其中该一个或多个程序存储于存储器中,被上述一个或多个处理器执行以实现本发明上述实施例中所示的方法流程和/或装置操作。例如,被上述一个或多个处理器执行的方法流程,可以包括:

获取待渲染数据帧所包含的图像数据;

依据获取的图像数据的尺寸,确定需创建的纹理图集尺寸;

依据确定出的尺寸,创建纹理图集。

再例如,被上述一个或多个处理器执行的方法流程,可以包括:

判断是否存在已有的纹理图集等待集合能够容纳需要加入纹理图集的当前图像数据,如果是,则将当前图像数据放入该已有的纹理图集等待集合;否则,创建新的纹理图集等待集合,将当前图像数据放入该新的纹理图集等待集合;

其中所述纹理图集等待集合用于确定需创建的纹理图集的尺寸。

本发明所提供的上述方法、装置和设备可以应用于用户终端系统层的图形引擎,例如负责进行系统级操作界面的图形绘制,也可以应用于用户终端应用层的图形引擎,例如负责进行应用级界面的图形绘制。

由以上描述可以看出,本发明提供的方法、装置和设备可以具备以下优点:

1)本发明依据数据帧所包含的图像数据,确定需创建的纹理图集尺寸,以此创建纹理图集,也就是说,能够根据实际需求创建合理尺寸的纹理图集,这种动态纹理图集的方式相比较静态纹理图集的方式,更节约显存。

2)能够避免出现因静态纹理图集容量有限而使剩余图像数据都采用非纹理图集的方式,减少了渲染命令,提高渲染性能。

3)能够多个数据帧的图像数据共享纹理图集等待集合,并且一旦纹理图集创建成功,对应的纹理图集等待集合就删除,尽可能的减少内存占用,提高系统性能。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一 个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1