我有一个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
又说glGet
和GL_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
覆盖。