ONScripterLabel_image.cpp内の
ONScripterLabel::loadImage()内の
以下の部分についてですが
SDL_Surface *ret = SDL_ConvertSurface(tmp, image_surface->format,
SDL_SWSURFACE);
SDL_FreeSurface(tmp);
もし、tmpのフォーマットがimage_surfaceのフォーマットと等しい場合
無駄な変換(単なるコピーだとは思いますが)をしてしまうことになります。
それにより、一時的にメモリを消費してしまうのと
読み込み速度がコピー速度だけ遅くなってしまうと思います。
例えば、createRectangleSurface(filename);で作成したサーフェスは
image_surfaceのフォーマットで作成されています。
ですので、上記の部分でフォーマットが一致した場合は
以下のようにSDL_ConvertSurfaceを呼ばないようにしてはどうでしょうか。
SDL_Surface *ret;
if((tmp->w * tmp->format->BytesPerPixel == tmp->pitch) &&
(tmp->format->BitsPerPixel == image_surface->format->BitsPerPixel) &&
(tmp->format->Rmask == image_surface->format->Rmask) &&
(tmp->format->Gmask == image_surface->format->Gmask) &&
(tmp->format->Bmask == image_surface->format->Bmask) &&
(tmp->format->Amask == image_surface->format->Amask)){
ret = tmp;
} else {
ret = SDL_ConvertSurface(tmp, image_surface->format, SDL_SWSURFACE);
SDL_FreeSurface(tmp);
}
秋月かたね