SOIL_load_OGL_texture, возвращающая NULL, возможно, проблема с рабочим каталогом (XCode 6)
Итак, я пытаюсь использовать SOIL для загрузки файла.png, который находится в папке "textures". Папка текстур находится в том же каталоге, что и код. Я вошел в настройки схемы в проекте XCode и изменил рабочий каталог на тот, где находится папка. Однако, когда я делаю этот простой тест, он всегда указывает, что текстура GLUint имеет значение NULL.
GLuint texture = SOIL_load_OGL_texture
(
"textures/image.png",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
);
if (texture == 0){
std::cout << "Texture not found!\n";
return 0;
}
Я не уверен, что делаю что-то не так в отношении SOIL, но я догадываюсь, что файл просто не читается. Как я уже сказал, я изменил рабочий каталог в XCode, но это ничего не меняет.
1 ответ
ОК, разобрался. Проблема заключалась в том, что файл PNG был 16-битным, а не 8-битным. Так же SOIL_load_OGL_texture
функция должна быть вызвана после glfwCreateWindow()
а также glfwMakeContextCurrent()
,
Вот ответ, который мне помог: SOIL: "Невозможно открыть файл" в C++ и OpenGL с Xcode