5

我有一个nVidia Quadro NVS 295/PCIe/SSE2卡,当我这样做时glGetString(GL_EXTENSIONS),打印出“压缩”的值和 grep,我得到这个列表

  • GL_ARB_compressed_texture_pixel_storage
  • GL_ARB_texture_compression
  • GL_ARB_texture_compression_rgtc
  • GL_EXT_texture_compression_dxt1
  • GL_EXT_texture_compression_latc
  • GL_EXT_texture_compression_rgtc
  • GL_EXT_texture_compression_s3tc
  • GL_NV_texture_compression_vtc

但话又说回来glCompressedTexImage2DglGet支持GL_COMPRESSED_TEXTURE_FORMATS的压缩,这只给出

  • 0x83f0 = GL_COMPRESSED_RGB_S3TC_DXT1_EXT
  • 0x83f2 = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
  • 0x83f3 = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT

这三个值。

现在为什么不glGet公开我的卡可以处理的其他压缩格式?说 LATC、RGTC 还是 VTC?

另外,为什么我在第一个列表中没有看到相应的 DXT3 或 5 扩展?

4

2 回答 2

10

现在为什么 glGet 不公开我的卡可以处理的其他压缩格式?

因为英伟达不想。真的,没有意义。ARB 甚至决定从 GL 4.3 中弃用(尽管没有删除)COMPRESSED_TEXTURE_FORMATS 内容。

简而言之,不要依赖那个特定glGet的 . 依赖扩展。如果您有 GL 3.0+,那么您有RGTC 格式;这是GL 3.0+所要求的。如果你有EXT_texture_compression_s3tc,那么你有“DXT”格式。如果您也有EXT_texture_sRGB,那么您有“DXT”格式的 sRGB 版本。等等。

另外,为什么我在第一个列表中没有看到相应的 DXT3 或 5 扩展?

咳咳

  • 0x83f2 = GL_COMPRESSED_RGBA_S3TC_ DXT3 _EXT
  • 0x83f3 = GL_COMPRESSED_RGBA_S3TC_ DXT5 _EXT

这些只是 S3TC 的不同形式。

于 2012-09-10T20:35:32.000 回答
2

为什么我在第一个列表中没有看到相应的 DXT3 或 5 扩展?

你是。它们被GL_EXT_texture_compression_s3tc.

于 2012-09-10T20:35:31.870 回答