关于DDS文件格式的说明
作者:Chinafish
http://www.csinx.org/IBlog/trackback.asp?tbID=8&action=addtb&tbKey=c851389d61912cf4adee43dca993b1f2b09a33e5
DDS文件格式要追述到S3(Silicon & Software Systems)公司提出的一种纹理压缩格式S3TC(S3 Texture Compression), 其目的是通过对纹理的压缩, 以达到节约系统带宽并提高效能的目的. S3TC就是通过压缩方式, 利用有限的纹理缓存空间来存储更多的纹理, 因为它支持6:1的压缩比例, 所以6M的纹理可以被压缩为1M存放在材质缓存中, 从而在节约了缓存的同时也提高了显示性能. 后来的DXTC和FXT1都是与S3TC类似的技术, 它们分别是微软和3dfx开发的纹理压缩标准, FXT1能提供比S3TC更高的压缩比, 达到8:1, 同时它也在3DFX新版本的Glide中得到支持. DXTC是1999年微软从S3公司取得S3TC的授权后更名而来的, 并在DirectX6中提供了支持, 即使用户的图形硬件不能支持S3TC, DirectX API会自动解码压缩后的纹理贴图. 压缩纹理贴图可以使用高品质的离线压缩器, 不会造成加载程序时有很多延时, 而DDS文件就可以使用DXTC方式压缩或是存储未压缩的像素格式.
注: S3TC是一种有损压缩方式, 纹理被压缩到每单元4点(不透明纹理或简单透明纹理)或每单元8点(复杂透明纹理), 压缩后的纹理品质保持良好.
DDS(DirectDraw Surface)文件格式是微软为DirectX开发的一种图片格式, 它是可以使用类似S3TC标准提供的一种压缩纹理格式. DDS文件可以有很多不同的格式, 可以含有 Mipmap 或不保存 Mipmap 信息, 可以使用压缩或非压缩的像素格式, 常见的压缩数据方式有 DXTn(DXT1~DXT5), DDS文件的结构见MSDN: DDS File Reference.
DXT1压缩格式可以提供高达8:1的压缩比例, 它可以支持1 bit 的 Alpha 通道, 每个 4×4 的块可以根据需要有或没有这个透明通道. 不需要 alpha 通道时, 每个块可以有四种颜色(其中两个是插值得到的). 需要 alpha 通道时, 只能有三种颜色, 另一个被保留用来描述是否透明, 因为只有一位 Alpha 信息, 所以只能表示透明或不透明, 因此DXT1的透明其实是一种镂空, 利用网孔达到的透明效果. 我们一般对画面质量要求不高并且不需要透明信息的图片使用这种格式.
DXT3压缩格式可以提供4:1的压缩比例, 可以支持4 bit 的 Alpha 通道, 主要用于Alpha通道较锐利, 对比强烈的材质, 比如镂空, 以及部分半透材质等.
DXT5压缩格式也可以提供4:1的压缩比例, 支持4 bit 的 Alpha 通道, 保存的上插值Alpha信息. 主要用于Alpha通道比较柔和的材质. 如用作镜面光屏蔽材质等.
至于 DXT2 和 DXT4 压缩格式并不常用, 与 DXT3 和 DXT5 压缩格式很相似, DXT2 与 DXT3 的区别在于 DXT2 使用带有预乘 Alpha 的压缩格式, DXT3 使用无预乘 Alpha 的压缩格式, DXT4 与 DXT5 的区别在于 DXT4 使用带有预乘插补 Alpha 的压缩格式, DXT5 使用插补 Alpha 的压缩格式, 无预乘. 关于压缩信息见MSDN: Textures with Alpha.
DDS文件可以通过 nVidia 公司提供的 Photoshop 插件直接打开编辑和保存, 请可以点此下载. 另一个方法是先在用 Photoshop 编辑图片将图片保存为有 Alpha 通道的 TGA 格式文件, 再使用转换工具生成DDS文件, 转换和查看DDS文件的工具可以安装DXSDK后获得, 也可以使用本站简化版的转换和查看工具, 请 点击此处 打开下载页面.