【问题标题】:DXT Texture working despite S3TC not being supported尽管不支持 S3TC,但 DXT 纹理仍然有效
【发布时间】:2016-03-25 03:20:33
【问题描述】:

题目涉及OpenGL ES 2.0。

我有一个设备,当通过

查询扩展时
glGetString(GL_EXTENSIONS)

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

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

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

使用glCompressedTexImage2D 提交纹理数据。

试过 DXT1 、 DXT3 和 DXT5 。

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

【问题讨论】:

    标签: c++ opengl-es textures


    【解决方案1】:

    我认为,缺少对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)以了解实际上支持哪些压缩格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 2017-01-09
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      相关资源
      最近更新 更多