<supports-gl-texture>
Android Market和<supports-gl-texture>元素
Android Market根据应用程序支持的纹理压缩格式来对其进行过滤,以确保程序只能安装于能够正确处理纹理的设备上。开发人员可以用纹理压缩过滤器根据GPU平台来指定特定的设备类型。
关于Android Market如何利用<supports-gl-texture>元素作为过滤条件的详情,请参阅下文Android Market和纹理压缩过滤。
语法:
<supports-gl-textureandroid:name="string"/>
包含于:
说明:
声明一个应用程序支持的GL纹理压缩格式。
所谓应用程序“支持”的GL纹理压缩格式,是指程序安装到某设备之后能够处理用这些格式压缩的纹理数据(texture asset)。应用程序可以由.apk文件提供本地的压缩数据,也可以运行时从服务器下载数据。
每个<supports-gl-texture>元素只精确声明一种所支持的纹理压缩格式,以android:name属性值进行指定。如果应用程序支持多种纹理压缩格式,可以声明多个<supports-gl-texture>元素。例如:
<supports-gl-textureandroid:name="GL_OES_compressed_ETC1_RGB8_texture"/>
<supports-gl-textureandroid:name="GL_OES_compressed_paletted_texture"/>
<supports-gl-texture>元素的声明仅仅是一种声明,这意味着Android系统本身在安装程序时不会检查这些元素来确保设备是否符合要求。不过其它服务(比如Android Market)或应用程序可以在与本程序交互时检查这个声明。因此,声明本程序能够支持的所有纹理压缩格式(列表见下文)就十分重要了。
通常应用程序和服务使用一组公认的字符串(如下所列)来声明所支持的GL压缩格式。根据需要,这些格式字符串可能会随时添加。因为采用字符串来表达,应用程序也可以根据需要自由声明其它格式。
请确保程序是用r3以上版本的SDK平台工具编译的,基于<supports-gl-texture>元素的过滤适用于所有API版本级别。
属性:
android:name
用描述符字符串定义一个应用程序支持的GL纹理压缩格式。常用的描述符列表如下:
纹理压缩格式描述符 | 注释 |
GL_OES_compressed_ETC1_RGB8_texture | Ericsson纹理压缩。在OpenGL ES 2.0中定义,适用于所有支持OpenGL ES 2.0的Android平台设备。 |
GL_OES_compressed_paletted_texture | 通用的调色板纹理压缩。 |
GL_AMD_compressed_3DC_texture | ATI 3Dc 纹理压缩。 |
GL_AMD_compressed_ATC_texture | ATI纹理压缩。适用于运行Adreno GPU的设备,包括HTC Nexus One、Droid Incredible、EVO等等。为了保证广泛的兼容性,设备可以用GL_ATI_texture_compression_atitc描述符声明<supports-gl-texture>元素。 |
GL_EXT_texture_compression_latc | Luminance alpha纹理压缩。 |
GL_EXT_texture_compression_dxt1 | S3 DXT1纹理压缩。适用于运行Nvidia Tegra2平台的设备,包括Motorala Xoom、Motorola Atrix、Droid Bionic等等。 |
GL_EXT_texture_compression_s3tc | S3纹理压缩,但不支持DXT变体。适用于运行Nvidia Tegra2 平台的设备,包括Motorala Xoom、Motorola Atrix、Droid Bionic等等。如果应用程序需要指定DXT变体,请用上一条描述符。 |
GL_IMG_texture_compression_pvrtc | PowerVR纹理压缩。适用于运行PowerVR SGX530/540 GPU的设备,比如Motorola DROID系列;Samsung Galaxy S、Nexus S和Galaxy Tab等等。 |
参阅:
Android Market会对用户所能见到的应用程序进行过滤,这样用户只能看见并下载那些与各自设备兼容的应用程序。其中一种方式是根据纹理压缩能力进行过滤,使得程序可以根据GPU的处理能力来控制对设备的适用范围。
为了确定应用程序的纹理压缩方式是否与给定的用户设备相兼容,Android Market将对以下内容进行对比:
· 程序支持的纹理压缩格式——程序在manifest的<supports-gl-texture>元素里声明的所支持的纹理压缩格式。
· 设备GPU所支持的纹理压缩格式——设备以系统只读属性的方式报告的格式。
每次向Android Market发布网站上传应用程序时,Android Market都会扫描程序的manifest文件并查找<supports-gl-texture>元素,从该元素中解析出格式描述符,并作为与程序.apk及版本相关联的元数据进行内部保存。
当用户在Android Market上搜索或查看应用程序时,后台服务会把程序支持的纹理压缩格式与用户设备所支持的格式进行比较。比较是根据格式描述符进行的,对字符串进行精确匹配。
如果其中任何一种程序支持的纹理压缩格式同时获得了设备的支持,Android Market就允许用户看见此应用并提供下载。反之,如果设备对程序列出的格式都不支持,Android Market就会滤除这个应用,也就不会提供下载。
如果应用程序没有声明任何<supports-gl-texture>元素,Android Market将不会根据GL纹理压缩格式进行过滤。