加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – NoDecodeDelegateForThisImageFormat使用ImageMagick读取.p

发布时间:2020-12-16 07:08:29 所属栏目:百科 来源:网络整理
导读:我正在尝试使用 ImageMagick从使用ASSIMP库加载Mesh(在Blender中制作)纹理.网格具有单一材质和单一纹理. 我试图遵循两个教程:Tutorial38和Tutorial22. 下面的代码块是有问题的地方; bool Texture::Load(){ try { m_pImage = new Magick::Image(m_fileName);
我正在尝试使用 ImageMagick从使用ASSIMP库加载Mesh(在Blender中制作)纹理.网格具有单一材质和单一纹理.

我试图遵循两个教程:Tutorial38和Tutorial22.

下面的代码块是有问题的地方;

bool Texture::Load()
{
    try {
        m_pImage = new Magick::Image(m_fileName); /* RIGHT HERE IT OCCURS */
        m_pImage->write(&m_blob,"RGBA");
    }
    catch (Magick::Error& Error) {
        std::cout << "Error loading texture '" << m_fileName << "': " << Error.what() << std::endl;
        return false;
    }

    glGenTextures(1,&m_textureObj);
    glBindTexture(m_textureTarget,m_textureObj);
    glTexImage2D(m_textureTarget,GL_RGBA,m_pImage->columns(),m_pImage->rows(),GL_UNSIGNED_BYTE,m_blob.data());
    glTexParameterf(m_textureTarget,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexParameterf(m_textureTarget,GL_TEXTURE_MAG_FILTER,GL_LINEAR);

    return true;
}

它几乎立即退出Try-Catch并显示当前错误:

“加载纹理时出错,’Resources / white.png’:myproject.exe:NoDecodeDelegateForThisImageFormat’Sources / white.png’error / construct.c / ReadImage / 550

至于我可以确定ImageMagick是否正确安装,我已经多次尝试手动编译它,但我总是使用新的libs得到Unresolved External错误(它们似乎比包含的那些大2-3 MB大)该项目).

尝试的版本:

ImageMagick的-6.6.5-10
ImageMagick的-6.6.0
ImageMagick的-6.8.9
ImageMagick-windows从其说明页面压缩.

尝试自安装程序二进制文件时遇到的一个大问题是,当代码需要时,它们不包括Release Candidate和Debug lib.虽然我提到的源代码版本不正确,但导致Unresolved External错误,或者没有明确存放他们的Include和Lib文件夹.

我已经联系了本教程的开发人员,但到目前为止他唯一说的是我可能安装了错误版本的ImageMagick并且与他包含的版本不兼容……没有说明哪个版本是正确的.

编辑 – 1:
– 从Here尝试安装/重新安装libpng无变化.

解决方法

好吧,令人尴尬的是,经过三个月的精心折磨,我找到了解决方案,并将编译器切换到“释放”模式而不是“调试”.我不再抱怨并且完美地加载了我的纹理.

不工作在“调试”模式似乎是ImageMagick的错误或Visual Studios 2010的错误,我想我会提交错误报告.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读