私はゲームエンジンに取り組んでいて、複数の形式のイメージローダーを作成するにはあまりにもやりすぎているので、私の質問は次のとおりです。イメージファイルをロードするための抽象化されたイメージロードライブラリはありますか?ファイルをロードして、ピクセルの配列を使用して画面にスプラットするだけです。
FreeImage は優れたオープンソースライブラリです
これはサンプルコードです、データは "out.data()"でアクセスできます
FREE_IMAGE_FORMAT format = FreeImage_GetFileTypeU(filename.c_str());
if (format == FIF_UNKNOWN) format = FreeImage_GetFIFFromFilenameU(filename.c_str());
if (format == FIF_UNKNOWN) throw(std::runtime_error("File format not supported"));
FIBITMAP* bitmap = FreeImage_LoadU(format, filename.c_str());
FIBITMAP* bitmap2 = FreeImage_ConvertTo32Bits(bitmap);
FreeImage_Unload(bitmap);
std::vector<char> out(FreeImage_GetWidth(bitmap2) * FreeImage_GetHeight(bitmap2) * 4);
FreeImage_ConvertToRawBits((BYTE*)out.data(), bitmap2, FreeImage_GetWidth(bitmap2) * 4, 32, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK, true);
FreeImage_Unload(bitmap2);
Boost's GIL があり、これはもともとアドビによって開発されました。これは最も直感的なものではないかもしれませんが、確かに最も完全で強力なライブラリの1つです。
OpenGLを使用している場合、そのスタイルと規則は他のどのライブラリよりもOpenGLに準拠しているため、 DevIL が適切な選択です。セットアップは比較的簡単で、複数のフォーマットにも対応しています。
Wussについての1つのこと。十分にテストされて時間を節約できる、動作するサードパーティのコードを設定するのはいいことですが、イメージのロードのしくみと、そのしくみがなぜ機能するのかを学ぶことについても、言いたいことがあります。本当に上手になりたいなら、一からやり直す必要があると思います。最終的にサードパーティのコードを使用することになります。
Simple DirectMedia Layer のサブプロジェクトである SDL_Image をご覧ください。これは、いくつかの異なる画像フォーマットをロードするための簡単な抽象化として機能します。 SDLはCで記述されていますが、CまたはC++コードのどちらでも簡単に使用できます。
さらに別の可能性(主に、Windows専用ではない場合)は CXImage
です。他の多くのものよりも明らかに優れているのは、重要な場合に備えて、多くのCamera Rawフォーマットをサポートしていることです。
OpenImageIO TIFF、JPEG/JFIF、OpenEXR、PNG、HDR/RGBE、ICO、BMP、Targa、JPEG-2000、RMan Zfile、FITS、DDS、Softimage PIC、PNMなど、さまざまなファイル形式をサポート、DPX、Cineon、IFF、Field3D、Ptex、Photoshop PSD、Wavefront RLA、SGI、WebP、GIF