エンディアンについて質問があります。色を HTML 形式 (#aabbcc のような RGB) で保存するのが好きです。
コードでは常に 0xaabbcc を使用して色を保存し、赤、緑、青の色を抽出するために、次のようにマスクを適用します。
int color = 0xaabbcc;
int r = color & 0xff0000;
int g = color & 0x00ff00;
int b = color & 0x0000ff;
これはうまく機能しますが、ビッグ エンディアンのマシンでテストしていません。結果は同じでしょうか?
man SDL_CreateRGBSurface の例のように、SDL がサーフェスを作成するためにエンディアンをチェックすることを確認する必要があります。
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
rmask = 0xff000000;
gmask = 0x00ff0000;
bmask = 0x0000ff00;
amask = 0x000000ff;
#else
rmask = 0x000000ff;
gmask = 0x0000ff00;
bmask = 0x00ff0000;
amask = 0xff000000;
#endif
surface = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 32,
rmask, gmask, bmask, amask);