OpenGL压缩的纹理和扩展



我有一个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_文本_压缩_平台
  • GL_EXT_texture_compression_rgtc
  • GL_EXT_文本_压缩_ s3tc
  • GL_NV_texture_compression_vtc

但是glCompressedTexImage2D又说glGetGL_COMPRESSED_TEXTURE_FORMATS返回支持的压缩,这只给出

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

这三个值。

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

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

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

因为NVIDIA不想这么做。实际上,这没有意义。ARB甚至决定弃用(尽管没有删除)GL 4.3中的COMPRESED_TEXTURE_FORMATS内容。

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

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

ahem

  • 0x83f2=GL_COMPRESED_RGBA_S3TC_DXT3_EXT
  • 0x83f3=GL_COMPRESSED_RGBA_S3TC_DXT5_EXT

这些只是S3TC的不同形式。

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

你是。它们由GL_EXT_texture_compression_s3tc覆盖。

相关内容

  • 没有找到相关文章

最新更新