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

时间:2016-03-24 18:39:22

标签: c++ opengl-es textures

主题涉及OpenGL ES 2.0。

我有一个设备,当通过

查询扩展时
glGetString(GL_EXTENSIONS)

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

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

但是,当在设备上使用DXT压缩纹理时,它们会毫无问题地呈现。

使用glCompressedTexImage2D提交纹理数据。

尝试使用DXT1,DXT3和DXT5。

为什么会这样?使用纹理压缩是否安全,尽管似乎不支持压缩?

1 个答案:

答案 0 :(得分:2)

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

引自glCompressedTexImage2D doc page for ES2

  

根据扩展规范解码纹理图像   定义指定的internalformat。 OpenGL ES(...)提供了一个   获取由此提供的此类格式的符号常量的机制   扩展。 支持的压缩纹理格式数量可以是   通过查询GL_NUM_COMPRESSED_TEXTURE_FORMATS的值获得。   支持的特定压缩纹理格式列表可以是   通过查询GL_COMPRESSED_TEXTURE_FORMATS

的值获得

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

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