本地Imagemagick无法正确转换为DDS(DXT5)

时间:2017-06-21 21:54:02

标签: opengl imagemagick-convert dds-format

使用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       |  \0  \0  \0  \a 020  \b  \0 356 002  \0  \0
0000020   024 003 000 000 120 014 000 000 000 000 000 000 001 000 000 000
         024 003  \0  \0   P  \f  \0  \0  \0  \0  \0  \0 001  \0  \0  \0
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  \0  \0  \0  \0  \0
0000060   000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
          \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000100   000 000 000 000 000 000 000 000 000 000 000 000 040 000 000 000
          \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0      \0  \0  \0

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

所以对于咯咯笑,我决定,嘿,也许我应该尝试使用a separate utility转换这个图像,只是为了确保文件没有任何问题。当我将此文件加载到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       |  \0  \0  \0  \a 020  \b  \0 356 002  \0  \0
0000020   024 003 000 000 300 012 011 000 000 000 000 000 001 000 000 000
         024 003  \0  \0 300  \n  \t  \0  \0  \0  \0  \0 001  \0  \0  \0
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  \0  \0  \0  \0  \0
0000060   000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
          \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000100   000 000 000 000 000 000 000 000 000 000 000 000 040 000 000 000
          \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0      \0  \0  \0
  1. 似乎在线工具使用ImageMagick,与我相同。
  2. 如果您查看第一个结果,则Octals 20-23为:120 014 000 000与在线结果:300 012 011 000。根据{{​​3}}索引20-23指向'字节数'
  3. 基本上,我的基本问题是:如何使用ImageMagick将png文件正确转换为dds纹理?

    更新:

    在线imagemagick生成了图片标题:

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

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

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

    所以我想知道我是否在某个地方错过了一个标志,以便正确编写在线版本可能正在使用的标题?

1 个答案:

答案 0 :(得分:2)

事实证明,这只是我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

修好了。感谢大家的帮助!