我阅读了一些关于 DXTn 和 BCN 纹理压缩的文章,并学习了如何对这些格式进行编码。但是我还是不知道DXT2和DXT3格式或者DXT4和DXT5格式有什么区别,我猜这些格式的区别是一样的。
在 D3D SDK 的文档中,它说:
DXT2 和 DXT3 的区别在于,在 DXT2 格式中,假设颜色数据已经预乘了 alpha。在 DXT3 格式中,假设颜色没有预乘 alpha。这两种格式是必需的,因为在大多数情况下,在使用纹理时,仅检查数据不足以确定颜色值是否已乘以 alpha。因为在运行时需要此信息,所以使用两个 FOURCC 代码来区分这些情况。但是,用于这两种格式的数据和插值方法是相同的。
这是否意味着:如果我们有一个颜色为 RGB 127,127,127 且 alpha 0 的像素,那么在 DXT2 中,它实际上会存储 RGB 0,0,0,因为 127 乘以 alpha 0?
如果它是正确的,我们在实际游戏开发中能得到什么好处?在我看来,这是完全没有必要的。
此外,BC2 和 BC3 格式发生了什么变化?据我所知,DXT2/3 映射到 BC2,DXT4/5 映射到 BC3,因此不再存在区别。是不是被搁置了?为什么?
任何帮助将不胜感激,谢谢!