DXT纹理工作,尽管不支持S3TC

DXT Texture working despite S3TC not being supported

本文关键字:不支持 S3TC 纹理 工作 DXT      更新时间:2023-10-16

本主题涉及OpenGL ES 2.0。

我有一个设备,当通过在扩展上查询时

glGetString(GL_EXTENSIONS)

返回支持的扩展名列表,其中没有一个是GL_EXT_texture_compression_s3tc

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

但是,当在设备上使用DXT压缩纹理时,它们的渲染没有任何问题。

使用glCompressedTexImage2D提交纹理数据。

尝试用于DXT1、DXT3和DXT5。

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

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

ES2:的glCompressedTexImage2D文档页报价

根据扩展规范对纹理图像进行解码定义指定的CCD_ 5。OpenGL ES(…)提供了获取此类格式的符号常量的机制由扩展支持的压缩纹理格式的数量可以是通过查询CCD_ 6的值获得。支持的特定压缩纹理格式列表可以是通过查询CCD_ 7的值获得

注意,GL_EXT_texture_compression_s3tc没有任何内容。对各种功能的支持可以实现,即使它们的"伪标准化"(我的意思是-扩展)替代品没有被列为支持。

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