このページでは、ステップ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にソースコードを追加する形でコーディングを行います。
もう1つのCImage2Dオブジェクトポインタを定義します。
#include "test2d.idx"
Dim ScreenX=640 As Long 'ディスプレイの幅 (ピクセル単位)
Dim ScreenY=480 As Long 'ディスプレイの高さ(ピクセル単位)
' TODO: この位置にグローバル変数を定義してください。
Dim pImageObj As *CImage2D
Dim pImageObj2 As *CImage2D
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
pImageObj2を解放するためのコードを追加します。
Sub QuitProc()
' TODO: この位置にアプリケーションの終了処理を記述してください。
Delete pImageObj
Delete pImageObj2
'DirectXの終了処理
dx_Quit()
End Sub
2つの四角形オブジェクトが少し重なるように、位置と幅・高さを指定して描画を行います。
Sub RenderProc()
' TODO: この位置に描画に関するコードを記述してください。
pImageObj->Draw(50,50,50+240,50+320)
pImageObj2->Draw(200,70,100+240,100+320)
End Sub
講座インデックスへ戻る | ©2005 Discoversoft |