尽管不支持 S3TC,但 DXT 纹理仍然有效

DXT Texture working despite S3TC not being supported

题目涉及OpenGL ES 2.0

我有一个设备,当通过

查询扩展时
glGetString(GL_EXTENSIONS)

Returns 支持的扩展列表,none 其中 GL_EXT_texture_compression_s3tc .

AFAIK,没有 GL_EXT_texture_compression_s3tc 不应该允许使用 DXT 压缩纹理。

但是,当在设备上使用 DXT 压缩纹理时,它们可以毫无问题地渲染。

纹理数据使用 glCompressedTexImage2D 提交。

尝试了 DXT1、DXT3 和 DXT5。

为什么有效?尽管似乎不支持压缩,但使用纹理压缩是否安全?

我认为,缺少对 GL_EXT_texture_compression_s3tc 的支持并不意味着您不能使用压缩格式。他们可能无论如何都会得到支持。

引自glCompressedTexImage2D doc page for ES2

The texture image is decoded according to the extension specification defining the specified internalformat. OpenGL ES (...) provide a mechanism to obtain symbolic constants for such formats provided by extensions. The number of compressed texture formats supported can be obtained by querying the value of GL_NUM_COMPRESSED_TEXTURE_FORMATS. The list of specific compressed texture formats supported can be obtained by querying the value of GL_COMPRESSED_TEXTURE_FORMATS.

请注意,GL_EXT_texture_compression_s3tc 没有任何内容。即使它们的'pseudo-standardized'(我的意思是 - 扩展)替代品未列为受支持,也可以实现对各种功能的支持。

您可能应该使用 glGetIntegerv() 查询那些常量(GL_NUM_COMPRESSED_TEXTURE_FORMATSGL_COMPRESSED_TEXTURE_FORMATS)以了解哪些压缩格式 实际上 受支持。