Note: この関数と SDL のαブレンディングの意味合いがバージョン 1.1.4 から変わりました。 バージョン 1.1.5 までは、α値 0 は不透明で、255 は透明とみなされていました。 これは今では反転されました。 つまり、0 (SDL_ALPHA_TRANSPARENT) は透明であり、 255 (SDL_ALPHA_OPAQUE) は不透明とみなされています。
SDL_SetAlpha はサーフェス単位のα値をセットしたり、 αブレンディングを有効に、また無効にするために使われます。
surface パラメータは どのサーフェスのα属性を調整したいのかを指定します。 flags は、αブレンディングが使われるべきかどうか (SDL_SRCALPHA)、 また blit の際に RLE アクセラレーションを使うべきかどうか (SDL_RLEACCEL)を指定するのに使われます。 flags はこれらの 2 つのオプションの OR による 組み合わせか、どちらか 1 つか、または 0 になり得るでしょう。 SDL_SRCALPHA がフラグとして渡されないと、 サーフェスを blit するときに全てのα情報は無視されます。 alpha パラメータはサーフェス単位のα値です。 つまり、サーフェス単位のαを使うには、サーフェスのαチャンネルは不要であり、 blit は未だ SDL_RLEACCEL によってアクセラレートされる ことが可能です。
Note: サーフェス単位のα値 128 は特殊な場合とみなされて最適化されるため、 他の値よりもはるかに高速です。
αは以下の方法でサーフェスの blit に影響を及ぼします。
| RGBA->RGB SDL_SRCALPHA あり | 転送元のピクセルはαチャンネルを使って転送先のピクセルとαブレンドされます。 |
| RGBA->RGB SDL_SRCALPHA なし | 転送元ピクセルから RGB データがコピーされます。 転送元のαチャンネルとサーフェス単位のα値は無視されます。 |
| RGB->RGBA SDL_SRCALPHA あり | 転送元ピクセルはサーフェス単位のα値を使って転送先ピクセルとαブレンドされます。 SDL_SRCCOLORKEY がセットされている場合は、 カラーキーの値と一致しないピクセルだけがコピーされます。 コピーされるピクセルのαチャンネルは不透明にセットされます。 |
| RGB->RGBA SDL_SRCALPHA なし | RGB データは転送元のピクセルからコピーされ、コピーされたピクセルのα値は不透明にセットされます。 SDL_SRCCOLORKEY がセットされている場合は、 カラーキーの値に一致しないピクセルだけがコピーされます。 |
| RGBA->RGBA SDL_SRCALPHA あり | 転送元のピクセルはαチャンネルを使って転送先のピクセルとαブレンドされます。 転送先のピクセルのαチャンネルは変更されません。 SDL_SRCCOLORKEY は無視されます。 |
| RGBA->RGBA SDL_SRCALPHA なし | RGBA データが転送先サーフェスにコピーされます。 SDL_SRCCOLORKEY がセットされている場合は、 カラーキーの値と一致しないピクセルだけがコピーされます。 |
| RGB->RGB SDL_SRCALPHA あり | 転送元ピクセルはサーフェス単位のα値を使って転送先ピクセルとαブレンドされます。 SDL_SRCCOLORKEY がセットされている場合は、 カラーキーの値と一致しないピクセルだけがコピーされます。 |
| RGB->RGB SDL_SRCALPHA なし | 転送元ピクセルから RGB データがコピーされます。 SDL_SRCCOLORKEY がセットされている場合は、 カラーキーの値と一致しないピクセルだけがコピーされます。 |
Note: SDL_SRCALPHA がセットされた状態での RGBA->RGBA の blit は 転送先サーフェスのαをそのまま維持することに注意して下さい。 これは、2 つの任意の RGBA サーフェスを合成して それらの「重ね合わせ」が期待されるような結果を得ることはできないということです。 転送先のαはマスクとして働きます。
また、ピクセル単位のαとサーフェス単位のαは合成できないことにも注意して下さい。 ピクセル単位のαが有効な時は必ずそちらが使われます。