Я попытался использовать библиотеку FreeImage для загрузки PNG в виде текстуры (из памяти). Это фрагмент кода:
FIMEMORY *fiStream = FreeImage_OpenMemory(streamData, size);
FREE_IMAGE_FORMAT fileFormat = FreeImage_GetFileTypeFromMemory(fiStream, 0);
FIBITMAP *image = FreeImage_LoadFromMemory(fileFormat, fiStream, 0);
int bitsPerPixel = FreeImage_GetBPP(image);
width = (int)FreeImage_GetWidth(image);
height = (int)FreeImage_GetHeight(image);
Я использую FILE с fopen, чтобы открыть файл, а затем прочитать поток в объект streamData. Файл и поток читаются корректно.
Результат: fileFormat = -1 и image имеет значение NULL.
Я также пытался использовать FreeImage для загрузки файла PNG непосредственно с диска с помощью FreeImage_Load, но результат тот же — он возвращает NULL.
Кто-нибудь сталкивался с подобной проблемой? Можете ли вы предложить альтернативу FreeImage, которая может считывать данные из памяти?