我正在尝试使用stbi_load()
加载纹理。这是我的代码:
int width, height, numComponents;
unsigned char* imgData = stbi_load(fileName.c_str(), &width, &height, &numComponents, 4);
if (imgData == NULL)
cout << "Cannot load texture" << endl;
//some code
//free
stbi_image_free(imgData);
当我运行该程序时,它显示为
Cannot load texture
。我不知道怎么了我确定文件名是有效路径,因为在写时:std::ifstream infile(fileName);
if (infile.good())
{
cout << "Good" << endl;
}
else
{
cout << "Not good" << endl;
}
它产生
Good
。有人可以告诉我此代码导致imgData
变成NULL
的问题(如果有人想知道,该图像是*.jpg
文件)。任何帮助将不胜感激!编辑:我运行了
stbi_failure_reason()
,它返回了progressive jpeg
。这是什么意思 ? 最佳答案
事实证明,答案确实很简单。如果您从此网站阅读:https://gist.github.com/roxlu/3077861
您会看到stb_image
不支持progressive JPEG
图片格式(我什至不知道存在)
关于c++ - stbi_load无法加载图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46020364/