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のときサーフェイス全体 |
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がコピーされる |