Nanashi-soft○プログラマ専用○Windows gcc SDL○
サーフェス(Surface)とは、SDLにおいての画像操作の基本単位です
このフォーマットで画像を扱う事で、自動的にDMA転送などの恩恵を受ける事ができます
・実画面のサーフェスを生成
SDL_Surface *screen=SDL_SetVideoMode(1280,720,32,SDL_SWSURFACE);
・画像をサーフェスに変換
話を分かりやすくする為に、ここではBMP画像ファイルを読み込んでみます
SDL_Surface *img= SDL_LoadBMP("1000.bmp");
・画像を実画面にコピー
SDL_BlitSurface(img, NULL, screen, NULL);
・実画面を描画
これを行うまでは、実際に画面は更新されない
要するに裏画面に描画していっていると考えれば良い
SDL_UpdateRect(screen, 0, 0, 1280, 720);
例えば、背景となるような画像で、スクロールしながら何度も描画する時です
・実画面のサーフェスを生成
基本と同じ
・画像をサーフェスに変換
基本と同じ
・読み込んだサーフェスを、実画面のフォーマットに変換
SDL_Surface *img2= SDL_DisplayFormat(img);
・画像を実画面にコピー
SDL_BlitSurface(img2, NULL, screen, NULL);
・実画面を描画
基本と同じ
この実画面にコピーと描画を繰り返す事になります
予め実画面のフォーマットに変換しておく事で、DMA転送による高速化が期待できます
PS3 Linuxでのプログラミング時に、この差は非常に大きくて必須の知識でした