Pygameのブレンドモードとはどういう意味ですか?
-
03-07-2019 - |
質問
Surface.blit には1.8の新しいパラメーターがあります。ブレンド。次の値が定義されています。
-
BLEND_ADD
-
BLEND_SUB
-
BLEND_MULT
-
BLEND_MIN
-
BLEND_MAX
-
BLEND_RGBA_ADD
-
BLEND_RGBA_SUB
-
BLEND_RGBA_MULT
-
BLEND_RGBA_MIN
-
BLEND_RGBA_MAX
-
BLEND_RGB_ADD
-
BLEND_RGB_SUB
-
BLEND_RGB_MULT
-
BLEND_RGB_MIN
-
BLEND_RGB_MAX
これらのモードの意味を誰かが説明できますか?
解決
ここでブレンド操作のソースを見つけることができます: surface.h
基本的に、ADDは2つのソースピクセルを追加し、結果を255でクリップします。SUBは2つのピクセルと0でクリップを減算します。
MULT
: result =(p1 * p2)/ 256
MIN
:各チャネルの低い値(ピクセル全体ではない)を選択します。したがって、pixel1が(100,10,0)
で、pixel2がの場合(0,10,100)
、(0,10,0)
MAX
:MINの反対(つまり(100,10,100)
)
そして、ドキュメントからは明らかではない追加のブレンドモードがあります: 0
(または単にパラメーターを省略します)。このモードは「スタンプ」します。宛先へのソースサーフェス。ソースサーフェスにアルファチャネルがある場合、これにより、「強い」強度が決まります。各ピクセルは( 0
=効果なし、 255
=ピクセルのコピー、 128
: result = .5 * source + .5 *宛先
)。
有用な効果:特定の領域を暗くするには、ブレンドモード0を使用し、ソース/スタンプサーフェスを黒で塗りつぶし、アルファを 10
に設定します:(0,0,0,10)
。
明るくするには、白い(255,255,255,10)
を使用します。
他のヒント
これらは、画像を重ね合わせる合成モードです。ブレンドモードの名前は、基になる操作を既に示しています。
BLEND _ *
定数は、単に BLEND_RGB _ *
定数のエイリアスであり、 BLEND_RGBA _ *
バリアントは4つのチャネルすべてで動作します(アルファを含む) RGB)のみとは対照的に。
さまざまなブレンドモードとそれぞれの効果に関する一般情報については、こちら。