【发布时间】:2019-08-25 00:25:53
【问题描述】:
我正在尝试在 OpenGL 中创建上下文加载器,但无法让 SOIL 加载图像。
代码如下:
Texture2D TextureLoader::loadSprite(const char* path)
{
int width, height;
GLuint texture = SOIL_load_OGL_texture(path, SOIL_LOAD_RGBA, SOIL_CREATE_NEW_ID, SOIL_FLAG_INVERT_Y);
if (texture == 0)
{
Texture2D failedTexture;
return failedTexture;
}
glBindTexture(GL_TEXTURE_2D, texture);
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width);
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, 0);
Texture2D texture2d(texture, width, height);
return texture2d;
}
它总是在纹理 == 0 检查时失败。映像文件与构建项目时生成的可执行文件位于同一目录中。 PNG和JPG我都试过了,都不能用。
【问题讨论】:
-
SOIL_load_OGL_texture的文档是否指定它将搜索可执行文件的目录? -
我不知道,我以为是这样的,因为这样说得通,而且网上的教程似乎也暗示了这一点。