サイログ。

~雑多な記事置き場~

アルファブレンディングでハマる

実は、SDL(Ruby/SDL固有かも?)のアルファブレンディングではまってました。
転送元サーフェス(32bpp)にSRCALPHAフラグが設定されていると、32bppの転送先
サーフェスのアルファチャネルを全く変えずに転送されるということを
知らずに、転送元のアルファチャネルがすべて0のサーフェスに転送しようと
してました。

というのも、アルファチャネル付き画像を透明にしようとすると、
色を[r,g,b,0]にしてSDL::Surface#fill_rectメソッドを呼び出すのですが、
その画像に、SRCALPHA付きの画像を転送しようとすると、転送後も透明のままと。
このことに気づくまで、Ruby/SDLのリファレンスと格闘してました。

これは経験上の話ですが、SDL::TTF#renderBlendedUTF8メソッドでも、出来た
画像はSRCALPHA付きだったようです。

で、rendereBlendedUTF8メソッドで作った画像をsetAlphaメソッドでSRCALPHA
をオフにして転送すると、今度はちゃんと表示されました。

やり方によっては、「アレ?」と考えてしまうような結果になりそうですので、
注意して組む必要がありそうです。