Nanashi-softプログラマ専用Windows gcc SDL


◇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でのプログラミング時に、この差は非常に大きくて必須の知識でした


TOPプログラマ専用Windows gcc SDL