DirectXプログラミング講座 〜Vol6. アルファブレンドによる半透明処理〜

このページでは、ステップ5で作成したテクスチャオブジェクトにアルファ値を指定して半透明表示を行ってみます。


アルファ値って何?どうやって指定するの?

ここで言うアルファ値とは、透明度を表す数値のことを示します。範囲は0〜255で、値が小さいほど透明になります。

指定方法ですが、CImage2D::SetColor関数の第2引数に改良を加えるだけで実現できます。ステップ5では色指定にD3DCOLOR_XRGBマクロ関数を使っていましたが、今回はD3DCOLOR_RGBAマクロ関数に変更してみます。


'D3DCOLOR型のRGBA値を返します
D3DCOLOR_RGBA(
    r,                    '色の赤成分を0〜255の範囲で指定します
    g,                    '色の緑成分を0〜255の範囲で指定します
    b,                    '色の青成分を0〜255の範囲で指定します
    a                     'アルファ値を0〜255の範囲で指定します
)

サンプルプログラムの作成方法


↑実行イメージ

サンプルプロジェクトをダウンロード

単に以前のテクスチャを半透明にするだけではつまらないので、今回はもう1つ四角形オブジェクトを生成し、2つの四角形オブジェクトを重ねて表示してみます。ステップ5で作成したtest2dプロジェクトを開きます。test2d.abpにソースコードを追加する形でコーディングを行います。

●test2d.abpの先頭部分のコーディング

もう1つのCImage2Dオブジェクトポインタを定義します。

#include "test2d.idx"


Dim ScreenX=640 As Long	'ディスプレイの幅  (ピクセル単位)
Dim ScreenY=480 As Long	'ディスプレイの高さ(ピクセル単位)

' TODO: この位置にグローバル変数を定義してください。

Dim pImageObj As *CImage2D
Dim pImageObj2 As *CImage2D

●InitProc関数のコーディング

pImageObj2に対する初期化を行います。texture2.jpgも忘れずに用意しておきましょう。pImageObj2の色指定(SetColor)でD3DCOLOR_RGBAマクロ関数を使っているところに注意して下さい。ここでは、アルファ値として150を指定しておきます。

Function InitProc()
    'DirectXを初期化
    If dx_Init(hMainWnd,ScreenX,ScreenY,FALSE)=0 Then
        InitProc=0
        Exit Function
    End If

    'マウスカーソルを非表示にする
    ShowCursor(FALSE)

    ' TODO: この位置にアプリケーションの初期化コードを記述してください。

    pImageObj= New CImage2D
    pImageObj->SetColor(D3DCOLOR_XRGB(255,255,255))
    pImageObj->SetTexture("texture.jpg",0)

    pImageObj2= New CImage2D
    pImageObj2->SetColor(D3DCOLOR_RGBA(255,255,255,150))
    pImageObj2->SetTexture("texture2.jpg",0)

    InitProc=1
End Function

●QuitProc関数のコーディング

pImageObj2を解放するためのコードを追加します。

Sub QuitProc()
    ' TODO: この位置にアプリケーションの終了処理を記述してください。

    Delete pImageObj
    Delete pImageObj2

    'DirectXの終了処理
    dx_Quit()
End Sub

●RenderProc関数のコーディング

2つの四角形オブジェクトが少し重なるように、位置と幅・高さを指定して描画を行います。

Sub RenderProc()
    ' TODO: この位置に描画に関するコードを記述してください。

    pImageObj->Draw(50,50,50+240,50+320)
    pImageObj2->Draw(200,70,100+240,100+320)
End Sub


講座インデックスへ戻る ©2005 Discoversoft