第二回:アルファ画像を使った半透明エフェクト

一昔前の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;
    }
}

ピクセル単位で処理しています。



今回使ったアルファ用画像です。
これを変えることでハート型や時計型などいろんなエフェクトが生まれます。