本地图像魔术未正确转换为 DDS (DXT5)



我在使用 ImageMagick 命令行实用程序使用 DXT5 压缩算法将 png 正确转换为 DDS 文件时遇到了一些困难。

convert -format dds -define dds:compression=dxt5 leia.png leia.dds

这是使用Version: ImageMagick 6.8.9-10 Q16 x86_64 2016-09-14完成的。我能够在本地查看该文件,因此它看起来是正确的。但是,当我将其加载到OpenGL中时,我只会看到到处都是伪影(随机彩色像素)。要确认生成的文件是 DDS 文件,请执行以下操作:

od -bc leia.dds | head

其中产生了:

$ od -bc leia.dds | head
0000000   104 104 123 040 174 000 000 000 007 020 010 000 356 002 000 000
D   D   S       |        a 020  b   356 002    
0000020   024 003 000 000 120 014 000 000 000 000 000 000 001 000 000 000
024 003       P  f             001      
0000040   111 115 101 107 105 115 101 107 111 103 113 000 000 000 000 000
I   M   A   G   E   M   A   G   I   C   K          
0000060   000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
                              
0000100   000 000 000 000 000 000 000 000 000 000 000 000 040 000 000 000
                                

您可以看到包含DDS标题的标头的第一部分。

所以为了咯咯笑,我决定,嘿,也许我应该尝试使用单独的实用程序转换此图像,以确保文件没有问题。 当我将此文件加载到 OpenGL 时,它工作正常。

下载文件后,我还再次检查了标题,看到:

od -bc leia-online.dds | head
0000000   104 104 123 040 174 000 000 000 007 020 010 000 356 002 000 000
D   D   S       |        a 020  b   356 002    
0000020   024 003 000 000 300 012 011 000 000 000 000 000 001 000 000 000
024 003     300  n  t           001      
0000040   111 115 101 107 105 115 101 107 111 103 113 000 000 000 000 000
I   M   A   G   E   M   A   G   I   C   K          
0000060   000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
                              
0000100   000 000 000 000 000 000 000 000 000 000 000 000 040 000 000 000
                                
  1. 看起来在线工具正在使用ImageMagick,和我一样。
  2. 如果你看第一个结果,八进制 20-23 是:120 014 000 000vs 在线结果:300 012 011 000。根据这个索引,20-23点到"字节计数">

所以基本上,我的基本问题是:如何使用 ImageMagick 将 png 文件正确转换为 dds 纹理?

更新:

在线图像魔术生成图像标题:

width: 788 height: 750 linearSize: 592576 mipmap_count: 1

我的本地版本的 imagemagick 生成了图像标题:

width: 788 height: 750 linearSize: 3152 mipmap_count: 1

所以我想知道我是否在某处缺少一个标志来让它正确写入在线版本可能正在使用的标题?

事实证明,这只是我ImageMagick版本的问题。升级自

ImageMagick 6.8.9-10 Q16 x86_64 2016-09-14 http://www.imagemagick.org

ImageMagick 7.0.6-0 Q16 x86_64 2017-06-12 http://www.imagemagick.org

修复了它。感谢大家的帮助!

最新更新