SDL_ConvertSurfaceとかしてみたが

STATUS: 故障中

 SDLオフ会で、表示が遅い〜と相談したら SDL_ConvertSurface してサーフェイスのフォーマットを合わせないと毎回変換がかかって遅くなるという話でした(FAQだって)。
 SDL_ConvertSurfaceなんてやってかなったよ〜。
 
 というわけで、対応してみました。
 が、SDL_HWSURFACEとSDL_SWSURFACEで速度が変わらない。
 640x480x16bpp(全画面fill + 640x204のイメージx2描画 + Flip)で231FPS。
 十分速いんだけど、結果がかわらないというのが気持ち悪い。
 さらにそもそもSDL_ConvertSurfaceやってもやらなくても変わらず(描画するイメージは、24bitカラーなので16bitにコンバートされて速くなりそうなんだけど)
 あと、SDL_Flipだけにしても、333fpsにしかならないので、SDL_Flipで7割以上かかっている状態。思いっきりソフトで処理してそう…

 なんか大変な勘違いをしていに違いない。(V-Sync同期とは違いそうだし)
 このマシンでやっても速いのでよくわからないや、遅いマシンで試してみよう。

SDL_ConvertSurface してるとこのソース

        m_pSurface = SDL_LoadBMP(pszFilename); // 24bitカラーのbmp

        SDL_Surface* p = SDL_GetVideoSurface();
        SDL_PixelFormat *pFmt = p->format; // formatをみるとSDL_SetVideoModeで指定した16bitカラーとなっている(正しい結果)

        SDL_Surface* pSurTemp = SDL_ConvertSurface( m_pSurface , pFmt , flags );
        SDL_FreeSurface( m_pSurface );
        m_pSurface = pSurTemp;
       

コメント