私は初期化しています
SDL_Init(SDL_INIT_VIDEO);
screen = SDL_SetVideoMode(800, 600, 32, SDL_SWSURFACE|SDL_DOUBLEBUF);
そして、ループで、スリープへの呼び出しの間に呼び出します。
SDL_LockSurface(screen);
// Will eventually twiddle pixels here...but not yet
SDL_UnlockSurface(screen);
SDL_Flip(screen);
そして、そのフリップの呼び出しにはさまざまな時間がかかりますが、約10ミリ秒であり、これは無駄です。
そのため、たとえば、ビデオメモリからシステムメモリなどにコピーを作成しているのではないかと思います。別の方法でサーフェスを作成する必要があります。ただし、さらに、に渡すフラグに関係なく、screen->flags
常に等しく、他のビットは設定されません。だからとにかく他の種類の表面を作ることはできません。SDL_ASYNCBLIT
SDL_SetVideoMode
別のオフスクリーンサーフェスを作成し、それにレンダリングしてから、それをスクリーンにブリットする必要がありますか?私は何が間違っているのですか?
編集:SDL_LockとSDL_Unlockのペアを削除しても、処理速度は向上しません。SDL_Flipは遅いです。