第二回:アルファ画像を使った半透明エフェクト
一昔前のCPUでは半透明をぐりぐり使うのは難しく、第一回のカーテンや分割渦巻き(kanon)のような pDst = pSrcとなる単純な転送が主流でした。
平均スペックが上がってきて、最近は半透明エフェクトを使ったものがほとんどです。
ということで今回はそれをやってみます(´ω`)
[式]
α = アルファ成分となる画像のRGB平均値
β = フェイズ
α' = -α + β, α' >= 0
for(int y=0; y<nSizeY; ++y) {
for(int x=0; x<nSizeX; ++x) {
const int nAlpha = - pLayer->GetR() + nPhase; // グレースケールならRだけでif (nAlpha>0)
*pDst = (*pSrc, nAlpha) // 計算したSrcをdstに代入++pDst;
++pSrc;
++pLayer;
}
}
ピクセル単位で処理しています。
今回使ったアルファ用画像です。
これを変えることでハート型や時計型などいろんなエフェクトが生まれます。