sge_transform_surface関数と8bppサーフェス

先日より、sge_transform_surface関数を使って生成したサーフェス(以下dst)のうち生成元サーフェス(以下src)のbppが8のものだけがなぜか真っ白に表示されるという現象が起きていた。今日になってようやく調べた結果、dstにsrcのパレットを設定することで色が付いた。今までこの現象の影響で32bppの画像ばかり使っていたが、これでようやく8bppな画像をちゃんと扱えるようになった。

SDL_Surface *dst = sge_transform_surface(src, 0.0f, 1.0f, 1.0f, 0);
SDL_SetSurfacePalette(dst, src->format->pallete);

SGEのソース(sge_rotation.c)を読むと、sge_transform_surface関数は内部でsge_transform関数を呼び出し、実際の変換処理はsge_transformNorm関数で行われているが、確かにピクセルのみコピーしていてパレットには触れていない。遡ってsge_transform関数はまだしもsge_transform_surface関数でさえパレットを設定しないのには何か意味があるのだろうか。意図が読めないからといって簡単に不具合扱いするのもなんだし、このままこちらがパレットを設定するってことで納得しよう。