SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 ); を実行されていない( ブレンドモードが DX_BLENDMODE_NOBLEND のまま )
ということはないでしょうか?
C++ のコードですが、一応以下のような DrawPolygon2D で左端と右端で透明度が異なる四角形を描画するプログラムを
組んでみましたが、正常に透明な四角形が描画できました
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
VERTEX2D Vert[ 6 ] ;
int a1 = 255, add1 = -2 ;
int a2 = 0, add2 = 2 ;
// ウィンドウモードで起動
ChangeWindowMode( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1;
// 描画先を裏画面に変更
SetDrawScreen( DX_SCREEN_BACK ) ;
// メインループ
while( ProcessMessage() == 0 )
{
// 裏画面をクリア
ClearDrawScreen() ;
// アルファ値を変更
a1 += add1 ;
if( a1 <= 0 )
{
a1 = 0 ;
add1 = -add1 ;
}
if( a1 >= 255 )
{
a1 = 255 ;
add1 = -add1 ;
}
a2 += add2 ;
if( a2 <= 0 )
{
a2 = 0 ;
add2 = -add2 ;
}
if( a2 >= 255 )
{
a2 = 255 ;
add2 = -add2 ;
}
// 四角形を描画
DrawBox( 100, 100, 640, 480, GetColor( 0,200,128 ), TRUE ) ;
// ブレンドモードをアルファブレンドに設定
SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 ) ;
// 2ポリゴン分の頂点のデータをセットアップ
Vert[ 0 ].pos = VGet( 0.0f, 0.0f, 0.0f ) ;
Vert[ 0 ].rhw = 1.0f ;
Vert[ 0 ].dif = GetColorU8( 200,200,0,a1 ) ;
Vert[ 0 ].u = 0.0f ;
Vert[ 0 ].v = 0.0f ;
Vert[ 1 ].pos = VGet( 456.0f, 0.0f, 0.0f ) ;
Vert[ 1 ].rhw = 1.0f ;
Vert[ 1 ].dif = GetColorU8( 200,200,0,a2 ) ;
Vert[ 1 ].u = 0.0f ;
Vert[ 1 ].v = 0.0f ;
Vert[ 2 ].pos = VGet( 0.0f, 456.0f, 0.0f ) ;
Vert[ 2 ].rhw = 1.0f ;
Vert[ 2 ].dif = GetColorU8( 200,200,0,a1 ) ;
Vert[ 2 ].u = 0.0f ;
Vert[ 2 ].v = 0.0f ;
Vert[ 3 ].pos = VGet( 456.0f, 456.0f, 0.0f ) ;
Vert[ 3 ].rhw = 1.0f ;
Vert[ 3 ].dif = GetColorU8( 200,200,0,a2 ) ;
Vert[ 3 ].u = 0.0f ;
Vert[ 3 ].v = 0.0f ;
Vert[ 4 ].pos = VGet( 0.0f, 456.0f, 0.0f ) ;
Vert[ 4 ].rhw = 1.0f ;
Vert[ 4 ].dif = GetColorU8( 200,200,0,a1 ) ;
Vert[ 4 ].u = 0.0f ;
Vert[ 4 ].v = 0.0f ;
Vert[ 5 ].pos = VGet( 456.0f, 0.0f, 0.0f ) ;
Vert[ 5 ].rhw = 1.0f ;
Vert[ 5 ].dif = GetColorU8( 200,200,0,a2 ) ;
Vert[ 5 ].u = 0.0f ;
Vert[ 5 ].v = 0.0f ;
// 2Dの2ポリゴンの描画
DrawPolygon2D( Vert, 2, DX_NONE_GRAPH, TRUE ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End();
// ソフトの終了
return 0;
}