我正在尝试将带有stb_image的图像加载到unsigned char*
。代码如下:
#define STB_IMAGE_IMPLEMENTATION
#include <stb_image.h>
namespace rhino {
Texture::Texture(const std::string& file) {
stbi_set_flip_vertically_on_load(1);
buffer = stbi_load(file.c_str(), &width, &height, &bpp, 4);
...
buffer
,bpp
,width
和height
变量在Texture
类中声明。在stbi_load
调用之后,width
,height
和bpp
为0.我确定文件路径是正确的,但即使我输入错误的路径,相同的结果也是发生的历史。如果发生错误但是没有打印文本,我不知道是否应该将stbi_image打印到控制台。
[编辑] 如果stb_image无法读取图像,有人真的知道会发生什么吗?
答案 0 :(得分:0)
我猜你必须使用绝对路径,因为你的stb_image.h位于项目目录之外的某个地方。这样,它将从标题所在的目录中查找图像的相对路径,而不是在项目目录中。
您有两种方法可以解决此问题:
使用绝对路径
将stb_image.h移动到项目目录中,最好是根目录
答案 1 :(得分:0)
您始终可以使用stbi_failure_reason()来获取发生问题的提示。如果stbi_load()工作正常,则stbi_failure_reason()返回null。如果不是,则返回实际错误。
let state = {
'choice0': true,
'choice1': false,
...
}
在您的情况下,如果您使用相对路径而不是绝对路径,它将返回一条消息“无法打开”。这样,您可能已经猜到了它指向错误的文件夹。如果STBI不支持您使用的图像类型,则您将收到一条消息“未知图像类型”,依此类推。