纹理压缩文件生成方法与流程

文档序号:11953613阅读:333来源:国知局
纹理压缩文件生成方法与流程

本公开用于图像数据处理,尤其是一种用于图像数据处理的纹理压缩文件生成方法。



背景技术:

随着科技的进步,手机在成为人们必不可少的生活用品之一的同时,其所具备的功能越来越多,例如,在手机上玩游戏等。

要想在手机上实现玩游戏等类似功能,那么GPU,即显卡等图形硬件则是支持游戏等功能中必不可少的硬件设备。GPU可以对图像中的纹理进行处理。纹理是在计算因图像画面的光栅化所产生的片段的色彩或外观时使用的一维、二维或多维数据项阵列。纹理可以是图像数据(照相的或计算机生成的)、颜色或透明度数据、粗糙度/光滑度数据、反射率数据等等。提供逼真的图形一般要求很多高质量的细节纹理。提供这样的纹理可能加重可用的内存和带宽的负担。GPU可以允许纹理在硬件设备中保持压缩状态,在所需的样本上实时1解压缩从而还原完整的图像,可以大幅减少所需的内存和带宽量。

纹理包括的颜色或透明度数据,即为颜色像素和透明通道。在许多应用场景下,例如游戏,3D模型等,在对颜色像素进行纹理压缩的基础上,能够支持透明通道的压缩会进一步提高压缩率,减少所需的内存和带宽量。

但是,由于标准等原因,现有支持透明通道纹理压缩的压缩技术只能应用在一小部分移动设备上。目前,大多数移动设备只支持到OpenGL ES 2.0。OpenGL ES 2.0是Khronos集团在2007年3月份制定的一种业界标准应用程序编程接口(API),可以大大提高不同消费电子设备的3D图形渲染速度,在嵌入式系统上实现了全面可编程的3D图形。

现有的支持透明通道压缩的压缩技术,例如PVRTC纹理压缩并未被收入OPENGL ES 2.0的标准之内。换而言之,PVRTC技术只能应用在一小部分移动设备上,例如IMAGINE TECHNOLOGIES公司授权的GPU芯片上。目前并没有一项支持透明通道的纹理压缩技术能够广泛应用在手机等移动设备上,因此,实现OpenGL ES 2.0的标准上,支持透明通道的纹理压缩便成为迫在眉睫的问题。



技术实现要素:

鉴于上述存在的缺陷,有必要提供一种纹理压缩文件生成方法,实现了在OpenGL ES 2.0的标准上,支持透明通道的纹理压缩。本公开提供一种纹理压缩文件生成方法,所述方法包括:

获取待压缩图像数据,所述待压缩图像数据包括图像本身以及与图像关联的数据信息;

根据输入的目标分辨率以及所述待压缩图像数据,将所述目标分辨率以及所述待压缩图像数据中任意一种或多种数据进行合并,生成具有标识作用的头文件;

提取所述待压缩图像数据中图像的透明通道,将所述待压缩图像数据中图像的颜色像素与图像的透明通道分离;

根据所述目标分辨率对所述透明通道进行分辨率调整,将所述透明通道的分辨率不断调低,直至与所述目标分辨率等同;

对调整后的透明通道和所述颜色像素进行纹理压缩,所述纹理压缩使用的技术包括ETC纹理压缩;

将压缩后的透明通道、压缩后的颜色像素与所述头文件封装。

另外,还有必要提供一种纹理压缩文件生成装置,该装置包括:

第一获取单元,用于获取待压缩图像数据,所述待压缩图像数据包括图像本身以及与图像关联的数据信息;

头文件生成模块,用于根据输入的目标分辨率以及所述待压缩图像数据,将所述目标分辨率以及所述待压缩图像数据中任意一种或多种数据进行合并,生成具有标识作用的头文件;

分离单元,用于提取所述待压缩图像数据中图像的透明通道,将所述待压缩图像数据中的颜色像素和图像的透明通道分离;

分辨率调整模块,用于根据所述目标分辨率对所述透明通道进行分辨率调整,将所述透明通道的分辨率不断调低,直至与所述目标分辨率等同;

压缩单元,用于对调整后的透明通道和所述颜色像素进行纹理压缩,所述纹理压缩使用的技术包括ETC纹理压缩;

封装单元,用于将压缩后的透明通道、压缩后的颜色像素与所述头文件封装。

本公开的实施例提供的技术方案可以包括以下有益效果:

本发明通过获取待压缩图像数据;根据输入的目标分辨率以及待压缩图像数据,生成具有标识作用的头文件;提取待压缩图像数据中图像的透明通道,将待压缩图像中图像的颜色像素和图像的透明通道分离,便于后续对颜色和图像透明通道的处理;根据所述目标分辨率对所述透明通道进行分辨率调整;对调整后的透明通道和所述颜色像素进行纹理压缩;将压缩后的透明通道、压缩后的颜色像素与所述头文件封装,以支持OpenGL ES 2.0的标准为基础,在此基础上实现了对透明通道纹理压缩的支持,该方法能够广泛应用于大多数移动设备上,大大提高了普及性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。

图1是一个实施例中图像压缩方法的方法流程图;

图2是图1中跟据输入的目标分辨率以及所述待压缩图像数据,生成头文件步骤的方法流程图;

图3是图1中根据所述目标分辨率对所述透明通道进行调整步骤的方法流程图;

图4是透明通道减分辨率算法的示意图;

图5是一个实施例中图像压缩装置的装置示意图;

图6是图4中头文件生成模块的装置示意图;

图7是图4中分辨率调整模块的装置示意图。

具体实施方式

这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在一个实施例中,请参考图1,具体的,该纹理压缩文件生成的方法及装置,包括:

步骤110,获取待压缩图像数据。

待压缩的图像数据包括图像、与图像捆绑的图像格式标识、图像著作权、图像作者、图像分辨率、图像的高度以及图像的宽度等。获取待压缩图像数据的方式可以是通过检测用户选取待压缩图像行为,进而获取与待压缩图像关联存储的待压缩图像数据。

步骤120,根据输入的目标分辨率以及待压缩图像数据,生成具有标识作用的头文件。

目标分辨率即为用户输入的所需求分辨率。

将目标分辨率以及待压缩图像数据中任意数据信息进行合并,生成具有标识作用的头文件,将头文件写入对应的头文件内存缓冲区域。

步骤130,提取待压缩图像数据中图像的透明通道,将待压缩图像数据中图像的颜色像素和图像的透明通道进行分离。

在大多数例如手机游戏等应用场景中,对透明通道的分辨率要求不是太高,所以,对透明通道的分辨率可以进行降低等调整,丛刻减少内存占用率和节省存储空间。在此讲图像的透明通道进行单独提取,与图像中的颜色像素进行分离,以便后续步骤中对透明通道分辨率通道进行调整。

另外,多数支持OpenGL ES 2.0标准的压缩技术直接对图像进行纹理压缩可能会造成透明通道的丢失,此步骤同时也保护了透明通道不被丢失。

步骤140,根据目标分辨率对透明通道进行调整。

如前述,待压缩图像中的透明通道具有可调整的空间,根据用户输入的目标分辨率对透明通道进行调整,直至透明通道的分辨率与目标分辨率等同。

步骤150,对颜色像素和调整后的透明通道进行纹理压缩。

需要说明的是,这里所述的纹理压缩必须是能够支持OpenGL ES 2.0标准的纹理压缩技术,例如由爱立信研发的ETC1技术。

另外,针对进行纹理压缩后的颜色像素、压缩后的透明通道预置有对应的存放的颜色像素缓冲区和透明通道缓冲区。颜色像素缓冲区用于存放压缩后的颜色像素,透明通道缓冲区用于存放压缩后的透明通道。颜色像素缓冲区与透明通道缓冲区是紧密相连的。

步骤160,将压缩后的透明通道、压缩后的颜色像素与头文件封装。

从缓冲区提取压缩后的透明通道、压缩后的颜色像素以及头文件,按照以头文件为首,透明通道为末的顺序进行封装打包,生成格式文档。

通过上述步骤,在支持OpenGL ES 2.0的基础上,实现了对透明通道纹理压缩的支持,同时,将颜色像素与透明通道分离,对透明通道分辨率进行相应调整,减少了内存的占用率,最终生成的格式文档对比32位的RGBA格式文档比较,压缩率提高了25%,且可以普及应用到所有支援OPENGL ES 2.0的设备上,具有极高的广泛适用性。

进一步的,请参阅图2,步骤120还包括:

步骤121,获取输入的目标分辨率。

具体的,预置多个分辨率选项,例如,1:1、1:4、1:16等。通过检测用户对分辨率选项的选取行为从而获取输入的目标分辨率。另外,获取目标分辨率的方式还可以是预置一个输入框,通过检测用户在框内输入的信息从而获取目标分辨率或者其他方式。

步骤123,读取待压缩图像数据中图像的宽度信息和长度信息,将图像的宽度信息、长度信息以及输入的目标分辨率合并,生成具有标识作用的头文件。

进一步的,请参阅图3,图4,步骤140包括:

步骤141,将透明通道的宽和高均减至原有数值的一半,生成新的透明通道,新生成的透明通道的分辨率为调整前的四分之一。

图像中透明通道(ALPHA)是一个8位(BITS)的像素数组。0代表全透明,255代表完全不透明,中间不同大小的数值代表不同的半透明像素。本发明支持1:1,1:4,1:16或1:64的透明通道(ALPHA)分辨率。透明通道的宽和高都会被减少1/2。

所为1:1分辨率,即透明通道的宽度等于原宽度,高等于原高度;1:4分辨率,即透明通道的宽等于原宽度/2,高等于原高度/2;1:16分辨率,即透明通道的宽等于原宽度/4,高等于原高度/4;1:64分辨率,即透明通道的宽等于原宽度/8,高等于原高度/8.

步骤143,根据目标分辨率,对新生成的透明通道进行判别,若新生成的透明通道分辨率等同于目标分辨率,进行后续步骤;若不等,重复上述分辨率调整步骤,直至生成的透明通道分辨率与目标分辨率等同。

例如,用户输入的目标分辨率为1:64,透明通道分辨率调整前均为1:1,此时判别出透明通道分辨率与目标分辨率不等,将透明通道的宽和高各减少1/2,生成新的透明通道,其分辨率为调整前的四分之一,此时判别出新生成的透明通道的分辨率仍与目标分辨率不等,在以上述透明通道分辨率1:4的基础上进行步骤141的调整,这个步骤会一直循环到透明通道分辨率降至用户所输入的需要的分辨率为止。

进一步的,步骤150使用的纹理压缩技术包括爱立信压缩。

需要说明的是,本技术方法还能够应用在一些通用性不如ETC的纹理压缩, 不限於ETC. 比如說PVRTC2, PVRTC4,JPEG。此外,在一个实施例中,还提供一种图像压缩的装置,请参考图5,装置包括第一获取单元210、头文件生成模块220、分离单元230、分辨率调整模块240、压缩单元250以及封装单元260,其中,

第一获取单元210,用于获取待压缩图像数据;

头文件生成模块220,用于根据输入的目标分辨率以及待压缩图像数据,生成具有标识作用的头文件;

分离单元230,用于提取待压缩图像数据中图像的透明通道,并将待压缩图像数据中图像的颜色像素与图像的透明通道分离;

分辨率调整模块240,用于根据目标分辨率对透明通道进行调整;

压缩单元250,用于对颜色像素和调整后的透明通道进行纹理压缩;

封装单元260,用于将压缩后的透明通道、压缩后的颜色像素与头文件封装。

在一个实施例中,请参考图6,头文件生成模块220包括:

第二获取单元221,用于获取输入的目标分辨率;

合并单元223,用于读取待压缩图像数据中图像的宽度信息和长度信息,将图像的宽度信息、长度信息以及输入的目标分辨率合并,生成头文件。

在一个实施例中,请参考图7,分辨率调整模块240包括:

分辨率调整单元241,用于将透明通道的宽和高均减至原有数值的一半,生成新的透明通道,新生成的透明通道的分辨率为调整前的四分之一;

判别单元243,用于根据目标分辨率,对新生成的透明通道进行判别,若新生成的透明通道分辨率等同于目标分辨率,进行后续步骤;若不等,重复上述分辨率调整步骤,直至生成的透明通道分辨率与目标分辨率等同。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

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