我正在尝试使用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/

10-11 00:46