OpenGL SOIL библиотека загружает только несжатые изображения ддс

Я работаю над приложением OpenGL и для этой цели я хочу текстурировать прямоугольник.
У меня есть файл .dds и я использую ПОЧВА библиотека.

Если я загружу изображение в свой проект

 void setTexture( const std::string& t_filename )
{
GLuint m_TEX = SOIL_load_OGL_texture(
t_filename.c_str(),
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_DDS_LOAD_DIRECT);

[...]
}

мое приложение сразу падает, если изображение сжато (DXT3, DXT5). Если это несжатый, все работает как ожидалось.

Что может быть причиной этого? SOIL должен поддерживать сжатые файлы .dds в соответствии с официальным сайтом.

РЕДАКТИРОВАТЬ 1:
Хорошо, я попытался отладить мою программу, используя gdb и valgrind. Похоже, что ошибка вызвана SOIL_load_OGL_texture() функционировать, как только вы используете сжатый файл .dds. Но я с трудом могу себе представить, что я единственный, кто когда-либо использовал сжатые изображения.

Вывод GDB:

 Program received signal SIGSEGV, Segmentation fault.
0x00007f469cd03197 in __strstr_sse2 () from /usr/lib/libc.so.6

#0  0x00007f469cd03197 in __strstr_sse2 () from /usr/lib/libc.so.6
#1  0x00007f469d8daa2d in query_DXT_capability () from /usr/lib/libSOIL.so.1
#2  0x00007f469d8dc19f in SOIL_direct_load_DDS_from_memory () from /usr/lib/libSOIL.so.1
#3  0x00007f469d8dcaad in SOIL_direct_load_DDS () from /usr/lib/libSOIL.so.1
#4  0x00007f469d8dcb66 in SOIL_load_OGL_texture () from /usr/lib/libSOIL.so.1

1

Решение

У меня была одна и та же проблема. Так как ошибка возникает в SOIL_load_OGL_texture() это, скорее всего, вызвано glGetString(GL_EXTENSIONS) какой SOIL использует внутри, но который устарел в OpenGL 3.0. Вы можете найти исправленную версию SOIL здесь: https://github.com/njcrawford/Simple-OpenGL-Image-Library/tree/issue-8-attempt2

Тем не менее, я бы посоветовал не использовать SOIL, так как он не обновлялся уже почти десять лет. Я использую stb_image, который работает хорошо и поддерживает те же форматы, что и SOIL: https://github.com/nothings/stb

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]