TransTest 概略
 
 

■ TransTest 概略

 画面のトランジッション機能のサンプルです。
 右側のスクロールバーで変化の度合いを操作できます。
 メニューからトランジッションのタイプを切り替えることが出来ます。

 

■ トランジッションスプライトの実装

 TransTest ではトランジッションを行うために EImageSprite クラスから ETransSprite クラスを派生させています。
 実際にトランジッションの描画を行っているのは Draw 関数ですが、ここでは、BlendAlphaChannel 関数を使ったトランジッションについて説明します。
 BlendAlphaChannel 関数を使ったトランジッションは、「斜め」、「雲模様」、「中抜き行交差」、「ランダムドット」の各フェードで共通して使用されているもので、フェード処理のためのαチャネルを用いて重ねあわせ処理を行います。

    if ( !BlendAlphaChannel
     ( m_pSrc, m_imgAlpha[m_ttType - ttAlphaFirst],
          EGL_BAC_MULTIPLY_ALPHA | EGL_BAC_ADD_ALPHA, nAlphaBase, 0x100 ) )
    {
         EImageSprite::Draw( hRenderPoly ) ;
    }

 BlendAlphaChannel 関数は簡単に言えば、RGB 画像とαチャネルを合成して、RGBA-32 形式の画像に格納する関数で、この例のようにαチャネルを用いたトランジッションや、RGB 画像はそのままで、αチャネルだけをアニメーションさせる場合などに使用することを目的に用意されている関数です。
 上記のようにフラグに、EGL_BAC_MULTIPLY_ALPHA 及び EGL_BAC_ADD_ALPHA を指定すると、指定したαチャネル画像の一部の領域を拡大してαチャネルとして利用することが出来ます。
 具体的なパラメータの意味と、内部で使用されている計算式については「EGL-ref.doc」を参照してください。

 尚、BlendAlphaChannel 関数が成功しても実際にはαチャネルとの合成が行われるだけですので、関数が成功したら表示させるために EImageSprite::Draw 関数を呼び出しています。