我正在尝试使用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
。这是什么意思?
答案 0 :(得分:2)
事实证明答案非常简单。如果您从本网站阅读:https://gist.github.com/roxlu/3077861
您会看到stb_image
不支持progressive JPEG
图片格式(我甚至不知道存在)