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

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()を呼んで詳細を知ることができる.

サンプルコード

extern SDL_Surface *surface;
extern SDL_Rect source_rect;
SDL_Surface *temp_surface;

SDL_BlitSurface(surface, &source_rect, temp_surface, NULL);

詳細

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