目次 - API(機能別) - サーフェイスの生成と単純な描画

サーフェイスの生成と単純な描画

インクルードファイル: SDL_surface.h

概要

これらの関数はサーフェイスの生成やビットマップ転送や点, 線, 長方形などの単純な描画を行う.

構造体

  1. SDL_Surface

関数

  1. SDL_BlitScaled
  2. SDL_BlitSurface
  3. SDL_ConvertPixels
  4. SDL_ConvertSurface
  5. SDL_ConvertSurfaceFormat
  6. SDL_CreateRGBSurface
  7. SDL_CreateRGBSurfaceFrom
  8. SDL_FillRect
  9. SDL_FillRects
  10. SDL_FreeSurface
  11. SDL_GetClipRect
  12. SDL_GetColorKey
  13. SDL_GetSurfaceAlphaMod
  14. SDL_GetSurfaceBlendMode
  15. SDL_GetSurfaceColorMod
  16. SDL_LoadBMP
  17. SDL_LoadBMP_RW
  18. SDL_LockSurface
  19. SDL_LowerBlit
  20. SDL_LowerBlitScaled
  21. SDL_MUSTLOCK
  22. SDL_SaveBMP
  23. SDL_SaveBMP_RW
  24. SDL_SetClipRect
  25. SDL_SetColorKey
  26. SDL_SetSurfaceAlphaMod
  27. SDL_SetSurfaceBlendMode
  28. SDL_SetSurfaceColorMod
  29. SDL_SetSurfacePalette
  30. SDL_SetSurfaceRLE
  31. SDL_UnlockSurface

SDL Wikiへのリンク

CategorySurface - SDL Wiki

SDL_Surface

ソフトウェアピットマップ転送で使われるピクセルの集まりを含む構造体

フィールド

Uint32flags(内部使用)
SDL_PixelFormat*formatサーフェイスに格納されたピクセルのフォーマット 詳細はSDL_PixelFormatを参照すること (読取専用)
intw幅のピクセル数 (読取専用)
inth高さのピクセル数 (読取専用)
intpitch幅のピクセルのbyte数 (読取専用)
void*pixels実際のピクセルデータへのポインタ 詳細を参照すること (読取専用)
void*userdata自由に利用できるポインタ (読み書き可能)
intlockedサーフェイスのロックを要求されたときに使う (内部使用)
void*lock_dataサーフェイスのロックを要求されたときに使う (内部で使用する)
SDL_Rectclip_rectサーフェイスへのビットマップ転送のクリッピングで使われるSDL_Rect構造体 SDL_SetClipRect()で設定できる (読取専用)
SDL_BlitMapmap他のサーフェイスへの高速転送マッピングの情報 (内部使用)
intrefcountアプリケーションから参照された回数

詳細

ほとんどのサーフェイスはpixelsに直接アクセスできる. SDL_SetSurfaceRLE()で最適化されたサーフェイスはpixelsにアクセスする前にSDL_LockSurface()でロックする必要がある. アクセスし終えたならばビットマップ転送する前にSDL_UnlockSurface()を呼ぶ必要がある.

関連項目(関数)

SDL_ConvertSurface
SDL_CreateRGBSurface
SDL_CreateRGBSurfaceFrom
SDL_FillRect
SDL_FillRects
SDL_FreeSurface
SDL_GetClipRect
SDL_GetColorKey
SDL_GetSurfaceAlphaMod
SDL_GetSurfaceBlendMode
SDL_GetSurfaceColorMod
SDL_LoadBMP_RW
SDL_LockSurface
SDL_LowerBlit
SDL_MUSTLOCK
SDL_SaveBMP_RW
SDL_SetClipRect
SDL_SetColorKey
SDL_SetSurfaceAlphaMod
SDL_SetSurfaceBlendMode
SDL_SetSurfaceColorMod
SDL_SetSurfacePalette
SDL_BlitScaled
SDL_UnlockSurface
SDL_BlitSurface

SDL Wikiへのリンク

SDL_Surface - SDL Wiki

SDL_BlitScaled

サーフェイスを別のサーフェイスに拡大縮小してコピーする

構文

int SDL_BlitScaled(SDL_Surface* src, const SDL_Rect* srcrect, SDL_Surface* dst, SDL_Rect* dstrect)

引数

srcコピー元のSDL_Surface構造体
srcrectコピー元の領域を表すSDL_Rect構造体. NULLのときサーフェイス全体
dstコピー先のSDL_Surface構造体
dstrectコピー先の領域を表すSDL_Rect構造体. NULLのときサーフェイス全体

戻り値

成功のとき0, 失敗のとき負の数のエラーコードを戻す. そのときSDL_GetError()を呼んで詳細を知ることができる.

詳細

これは高レベルの拡大縮小ビットマップ転送関数である. この関数は内部でSDL_LowerBlitScaled()を呼んでいる.

関連項目(関数)

SDL_BlitSurface
SDL_LowerBlitScaled

SDL Wikiへのリンク

SDL_BlitScaled - SDL Wiki

SDL_BlitSurface

サーフェイスを別のサーフェイスに高速にコピーする

構文

int SDL_BlitSurface(SDL_Surface* src, const SDL_Rect* srcrect, SDL_Surface* dst, SDL_Rect* dstrect)

引数

srcコピー元のSDL_Surface構造体
srcrectコピー元の領域を表すSDL_Rect構造体. NULLのときサーフェイス全体
dstコピー先のSDL_Surface構造体
dstrectコピー先の領域を表すSDL_Rect構造体. NULLのときサーフェイス全体

戻り値

成功のとき0, 失敗のとき負の数のエラーコードを戻す. そのときSDL_GetError()を呼んで詳細を知ることができる.

詳細

SDLのビットマップ転送が内部でどのように行われるかを正確に理解していないならば, そしてどのように他のビットマップ転送関数を使うのか分からないならばSDL_BlitSurface()を使うべきである.

これは高レベルのビットマップ転送関数で, SDL_LowerBlit()を呼ぶ前に領域の検証とクリッピングが行われる.

このビットマップ転送関数はロックしたサーフェイスに対して呼んではならない.

コピーされる領域のサイズはsrcrectの幅と高さで決まる. dstrectは位置のみで, 幅と高さは無視される. dstrectの座標が負の場合でも正しくクリッピングされる.

srcrectがNULLのときサーフェイスの全体がコピーされる. destrectがNULLのときコピー先は(0,0) (左上)となる.

全てのクリッピングが行われた後, 最後に転送された領域はdstrectに保存される. (srcrectは変化しない.)

ブレンディングやカラーキーの定義の有無により転送は以下のようになる.
フォーマット コピー元サーフェイスのブレンドモード 転送
RGBA→RGB SDL_BLENDMODE_BLEND アルファブレンド(コピー元のアルファチャネルとパー・サーフェイス・アルファが使われる). SDL_SRCCOLORKEYは無視される.
SDL_BLENDMODE_NONE RGBがコピーされる. SDL_SRCCOLORKEYが設定されていれば, コピー元のカラーキーのRGB値と一致するピクセルのみコピーされる.
RGB→RGBA SDL_BLENDMODE_BLEND アルファブレンド(コピー元のパー・サーフェイス・アルファが使われる). SDL_SRCCOLORKEYが設定されていれば, コピー元のカラーキーのRGB値と一致するピクセルのみコピーされる.
SDL_BLENDMODE_NONE RGBがコピーされる. コピー先のアルファにはコピー元のパー・サーフェイス・アルファが設定される.
RGBA→RGBA SDL_BLENDMODE_BLEND アルファブレンド(コピー元のアルファチャネルとパー・サーフェイス・アルファが使われる). SDL_SRCCOLORKEYは無視される.
BLENDMODE_NONE RGBA全てがコピーされる. SDL_SRCCOLORKEYが設定されていれば, コピー元のカラーキーのRGB値と一致するピクセルのみコピーされる. このときアルファは無視される.
RGB→RGB SDL_BLENDMODE_BLEND アルファブレンド(コピー元のパー・サーフェイス・アルファが使われる). SDL_SRCCOLORKEYが設定されていれば, コピー元のカラーキーのRGB値と一致するピクセルのみコピーされる.
SDL_BLENDMODE_NONE RGBがコピーされる

関連項目(関数)

SDL_BlitScaled
SDL_LowerBlit

SDL Wikiへのリンク

SDL_BlitSurface - SDL Wiki

SDL_ConvertPixels

あるフォーマットのピクセルの集まりを別のフォーバットに変換してコピーする

構文

int SDL_ConvertPixels(int width, int height, Uint32 src_format, const void* src, int src_pitch, Uint32 dst_format, void* dst, int dst_pitch)

引数

width幅のピクセル数
height高さのピクセル数
src_formatコピー元のピクセルのフォーマット (詳細を参照すること)
srcコピー元のピクセル
src_pitchコピー元の幅のbyte数
dst_formatコピー先のピクセルのフォーマット (詳細を参照すること)
dst新しいピクセルを書き込むポインタ
dst_pitchコピー先の幅のbyte数

戻り値

成功のとき0, 失敗のとき負の数のエラーコードを戻す. そのときSDL_GetError()を呼んで詳細を知ることができる.

詳細

src_formatとdst_formatはSDL_PixelFormatEnum列挙体の1つである.

SDL Wikiへのリンク

SDL_ConvertPixels - SDL Wiki