【发布时间】:2014-12-18 14:33:14
【问题描述】:
我没有找到任何在线更新的有效资源,并比较了桌面版 OpenGL 的纹理压缩格式。一切要么过时,要么适用于移动设备。
在我的平台上,我看到了许多不同的格式:
GL_ARB_compressed_texture_pixel_storage
GL_ARB_texture_compression
GL_ARB_texture_compression_bptc
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
如果我直接查询GL_COMPRESSED_TEXTURE_FORMATS,我还有一些其他的
public static final int GL_COMPRESSED_RGB_S3TC_DXT1_EXT = 33776;
public static final int GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778;
public static final int GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779;
public static final int GL_PALETTE4_RGB8_OES = 0x8B90 = 35728;
public static final int GL_PALETTE4_RGBA8_OES = 0x8B91;
public static final int GL_PALETTE4_R5_G6_B5_OES = 0x8B92;
public static final int GL_PALETTE4_RGBA4_OES = 0x8B93;
public static final int GL_PALETTE4_RGB5_A1_OES = 0x8B94;
public static final int GL_PALETTE8_RGB8_OES = 0x8B95;
public static final int GL_PALETTE8_RGBA8_OES = 0x8B96;
public static final int GL_PALETTE8_R5_G6_B5_OES = 0x8B97;
public static final int GL_PALETTE8_RGBA4_OES = 0x8B98;
public static final int GL_PALETTE8_RGB5_A1_OES = 0x8B99 = 35737;
public static final int GL_COMPRESSED_RGB8_ETC2 = 0x9274 = 37492;
public static final int GL_COMPRESSED_SRGB8_ETC2 = 0x9275;
public static final int GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276;
public static final int GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277;
public static final int GL_COMPRESSED_RGBA8_ETC2_EAC = 0x9278;
public static final int GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279 = 37497;
public static final int GL_COMPRESSED_R11_EAC = 0x9270 = 37488;
public static final int GL_COMPRESSED_SIGNED_R11_EAC = 0x9271;
public static final int GL_COMPRESSED_RG11_EAC = 0x9272;
public static final int GL_COMPRESSED_SIGNED_RG11_EAC = 0x9273 = 37491;
虽然here Nicol 说不要依赖glGet,但要依赖扩展..
据我所知,它们都是有损的,对吧?
搜索 S3TC/DXTx/BCx 似乎是在线记录最多的一种,但它也很古老,而且性能优于更现代的格式。
比较它们的一个非常好的网站是this one,但它是针对移动设备的,也是我发现的唯一一个解释 DXT3 和 DXT5 不同目标的网站。但它错过了EC2,这在 GLES3 和 GL4.3 上似乎是强制性的。
另一个有趣的网站是this one。
PVRTC 在性能方面似乎是最好的,但不幸的是它只能在专用硬件上运行。 ASTC 也很有前途,但与 PVRTC 有相同的缺点。 ATITC 的名字似乎也很古老(ATI 纹理压缩)
所以,我想知道您认为当今桌面上 GL3+ 的最佳压缩格式是什么。
编辑:添加另一个有趣的来自 Nvidia 的 link 纹理压缩,并强调 ASTC
【问题讨论】:
标签: format compression textures opengl-3 opengl-4