GL_EXT_texture_compression_dxt1和GL_EXT_texture_compression_s3tc之间的区别是什么?

时间:2014-09-18 10:26:03

标签: opengl opengl-es

当我尝试在我的电脑中看到OpenGL Extensions时,它会在其他许多扩展中显示以下两个扩展名

GL_EXT_texture_compression_dxt1

GL_EXT_texture_compression_s3tc

我在互联网上查了一下它说D3n调用了s3tc。这意味着s3tc和DXT基本相同的算法:   http://en.wikipedia.org/wiki/S3_Texture_Compression

我有一系列问题:

  1. 然后,为什么我的电脑显示具有两个不同项目的相同压缩算法。

  2. 我还看到以下扩展名

    GL_ANGLE_texture_compression_dxt5

  3. 据我所知,它提供了dxt5压缩,但为什么它以GL_ANGLE开头,它与GL_EXT前缀有何不同?

1 个答案:

答案 0 :(得分:1)

GL_EXT_texture_compression_s3tc支持DTX1,DTX3和DTX5压缩纹理。根据我的阅读,几乎每个现代GPU都支持它。

从阅读规范来看,GL_EXT_texture_compression_dxt1是GL_EXT_texture_compression_s3tc的精简版,主要针对OpenGL ES;它只支持DTX1,不支持为您压缩纹理。由于它是先前扩展的子集,因此驱动程序可以报告它支持两种扩展。

除了ARB和EXT前缀之外,还有一些特定于供应商的扩展,它们以供应商名称为前缀(例如GL_NV_texture_barrierGL_AMD_pinned_memory)。 GL_ANGLE显然适用于ANGLE project特有的扩展名。根据它的规范,GL_ANGLE_texture_compression_dxt5是支持DTX5的GL_EXT_texture_compression_dxt1的扩展。