我正在尝试使用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, 0, GL_RGBA, m_pImage->columns(), m_pImage->rows(), 0, GL_RGBA, 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并显示当前错误:
&#34;加载纹理时出错,&#39; Resources / white.png&#39;:myproject.exe:NoDecodeDelegateForThisImageFormat&#39; Resources / white.png&#39;误差/ constitute.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。虽然我编译的源代码版本不正确并导致未解决的外部错误,或者没有明确存放其Include和Lib文件夹。
我已经联系了本教程的开发人员,但他到目前为止唯一说的是我可能安装了错误版本的ImageMagick并且与他包含的版本不兼容......不说哪个版本是正确的。
编辑 - 1: - 从Here尝试安装/重新安装libpng没有变化。
答案 0 :(得分:1)
嗯,令人尴尬的是,我经过三个多月的精心折磨后找到了解决方案,而且是将编译器切换到&#34; Release&#34;模式而不是&#34; Debug&#34;。我不再抱怨并且完全加载了我的纹理。
不工作&#34;调试&#34;模式似乎是ImageMagick的一个错误或Visual Studios 2010的一个错误,我想我会提交错误报告。