zipアーカイブを読み取ってそこからpng画像を読み込もうとしていますが、SDL_Imageから無効な画像形式エラーが発生します。これがコードです
#include <SDL\SDL.h>
#include <SDL\SDL_opengl.h>
#include <SDL\SDL_image.h>
#define ZLIB_WINAPI //to use zlibwapi dll
#include <zlib.h>
#include <zip.h> //minizip
#include <unzip.h> //minizip
#include <string>
SDL_RWops* readfromarchive(std::string archive, std::string filename)
{
unzFile data;
unz_file_info info;
Uint8* buffer = NULL;
SDL_RWops* rw = NULL;
data = unzOpen(archive.c_str());
unzLocateFile( data, filename.c_str(), 1 );
unzGetCurrentFileInfo( data, &info, NULL, 0, NULL, 0, NULL, 0 );
unzOpenCurrentFile( data );
buffer = (Uint8*)malloc(info.uncompressed_size);
unzReadCurrentFile( data, buffer, info.uncompressed_size );
rw = SDL_RWFromMem(buffer, info.uncompressed_size);
free(buffer);
unzClose(data);
return rw;
}
私がこれをするとき
Surf_Temp = IMG_Load_RW( readfromarchive(archive, filename) , 1);
エラーIMG_Load_RWが表示されます:%sサポートされていない画像形式まあ、解凍したファイルから直接ロードする場合は、IMG_Load()を使用して機能し、sdlを介してrwops構造を作成し、
IMG_Load_RW(SDL_RWFromFile(filename.c_str(), "rb"), 1);
したがって、ファイル形式は問題ありません。すべてのzlibおよびminizip関数はエラーを返しません。情報構造体を確認し、データがロードしようとしているファイルと一致しているため、エラーはrwops構造体の作成のどこかにあります。