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

SDL_BlitSurface

サーフェイスを別のサーフェイスに高速にブロック転送する

ヘッダ

SDL3/SDL_surface.h

構文

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

引数

SDL_Surface *srcコピー元のSDL_Surface
const SDL_Rect *srcrectコピー元の領域のSDL_Rect. NULLのときサーフェイス全体
SDL_Surface *dstコピー先のSDL_Surface
const SDL_Rect *dstrectコピー先のx, y座標のSDL_Rect. NULLのとき(0, 0). この幅と高さは無視され, srcrectの幅と高さでコピーされる. 幅と高さを指定したい場合はSDL_BlitSurfaceScaled()を使用すること

戻り値

(bool) 成功のとき真, 失敗のとき偽を戻す. SDL_GetError()を呼んで詳細を知ることができる.

詳細

srcrectまたはdstrectのどちらかがNULLの場合, サーフェイス全体(srcまたはdst)がdst->clip_rectでクリッピングされてコピーされる.

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

ブレンドやカラーキーの定義の有無によりコピーは以下のようになる.

形式 コピー元サーフェイスのブレンドモード コピー
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がコピーされる

スレッドセーフ

srcdstのスレッドを同時に使用するのは1つのスレッドである必要がある

バージョン

SDL 3.2.0以降

サンプルコード

SDL_Surface *surface;
SDL_Rect source_rect;
SDL_Surface *temp_surface;

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

関連項目

SDL Wikiへのリンク

SDL_BlitSurface - SDL Wiki