目次 - SDL 3.0 API(機能別) - ブレンドモード - SDL_ComposeCustomBlendMode

SDL_ComposeCustomBlendMode

レンダラ用のカスタムブレンドモードを構成する

ヘッダ

SDL3/SDL_blendmode.h

構文

SDL_BlendMode SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor, SDL_BlendFactor dstColorFactor, SDL_BlendOperation colorOperation, SDL_BlendFactor srcAlphaFactor, SDL_BlendFactor dstAlphaFactor, SDL_BlendOperation alphaOperation);

引数

SDL_BlendFactorsrcColorFactor元ピクセルの赤, 緑, 青要素に適用されるSDL_BlendFactor
SDL_BlendFactordstColorFactor先ピクセルの赤, 緑, 青要素に適用されるSDL_BlendFactor
SDL_BlendOperationcolorOperation元ピクセルと先ピクセルの赤, 緑, 青要素のブレンドに使われるSDL_BlendOperation
SDL_BlendFactorsrcAlphaFactor元ピクセルのα要素に適用されるSDL_BlendFactor
SDL_BlendFactordstAlphaFactor先ピクセルのα要素に適用されるSDL_BlendFactor
SDL_BlendOperationalphaOperation元ピクセルと先ピクセルのα要素のブレンドに使われるSDL_BlendOperation

戻り値

(SDL_BlendMode) 選択した係数と操作が表すSDL_BlendModeを戻す

詳細

レンダラが対応していれば, この関数が戻したSDL_BlendModeSDL_SetRenderDrawBlendModeSDL_SetTextureBlendModeで使用することができる.

ブレンドモードは, 描画するピクセル(元)とレンダーターゲットのピクセル(先)のブレンドの方法を決めるものである. 初めに, 元と先のピクセルの要素とブレンド係数を積算する. 次に, その2つの結果をブレンド操作に渡し, レンダーターゲットに書き込む結果を求める.

疑似コードで表すと次の様になる:

dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor);
dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor);

(srcRGB = 描画元の色要素, srcColorFactor = 描画元の色ブレンド係数, dstRGB = 描画先の色要素, dstColorFactor = 描画先の色ブレンド係数, colorOperation() = 色ブレンド操作)
(srcA = 描画元のα値, srcAlphaFactor = 描画元のαブレンド係数, dstA = 描画先のα値, dstAlphaFactor = 描画先のαブレンド係数, alphaOperation() = αブレンド操作)

関数のcolorOperation(src, dst)alphaOperation(src, dst)は次の内の1つを戻す:

赤, 緑, 青要素は, それぞれSDL_BlendFactorの1番目, 2番目, 3番目と積算される. 4番目の値は使用しない.

α値はSDL_BlendFactorの4番目と積算される. 他の値はα値の計算では使用しない.

生成したブレンドモードに対応しているかはレンダラによる. 特定のSDL_BlendModeが対応しているかをチェックするには, レンダラを生成してSDL_SetRenderDrawBlendModeまたはSDL_SetTextureBlendModeに渡すこと. そのブレンドモードに対応していない場合はエラーを戻す.

次の一覧は, それぞれのレンダラのカスタムブレンドモードの対応の説明である. 全てのレンダラは, SDL_BlendMode列挙体のブレンドモードに対応している.

一部のレンダラはデフォルトレンダーターゲットに対してα要素を提供しない. この場合, ブレンド係数SDL_BLENDFACTOR_DST_ALPHAとSDL_BLENDFACTOR_ONE_MINUS_DST_ALPHAは効果がない.

スレッドセーフ

この関数はどのスレッドからも安全に呼べる.

バージョン

SDL 3.2.0以降

関連項目

SDL Wikiへのリンク

SDL_ComposeCustomBlendMode - SDL Wiki