Linux と Mac OS X の両方で、SDL の IMG_Load() 関数を使用して PNG ファイルをロードしています。動作しますが、Linux では 24 BitsPerPixel のフォーマットを取得し、OS X では 32 bpp を取得するという奇妙な部分があります。
SDL_Surface *image = IMG_Load("path/to/image.png");
std::cerr << (int)image->format->BitsPerPixel << std::endl;
イメージ ファイルは、両方のシステムでまったく同じです。
$ file data/test_scenario.png
data/test_scenario.png: PNG image data, 640 x 400, 8-bit/color RGB, non-interlaced
ファイル出力から判断すると、24bpp が正しいと思います。
なぜこれが起こるのか、どうすればこれを回避できるのでしょうか?