>通さま
SetDrawBlendMode() のタイミングについてですが、
ブレンドする対象画像の直前に実行しております。
念のため、Ver2.25及び2.25bについて6通りのテストを行いましたので報告させていただきます。
1, 表画面で、DrawBox背景を描画、DrawBoxで重ね描画
2, 表画面で、DrawGraphで背景を描画、DrawBoxで重ね描画
3, 表画面で、DrawBox背景を描画後GetDrawScreenGraphでハンドルを取得しDrawGraphで背景を描画、DrawBoxで重ね描画
4, 裏画面で"1"の処理で描画
5, 裏画面で"2"の処理で描画
6, 裏画面で"3"の処理で描画
で、ブレンド処理が正常であればo無視されれば*
とした表を示します。
Ver |1|2|3|4|5|6
2.25 |o|o|o|o|o|o
2.25b|o|o|o|*|o|o
//テストコード
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// DXライブラリの初期化
if( DxLib_Init() == -1 ) return -1 ;
int GrHandle = LoadGraph("back.bmp"), MkHandle = MakeGraph(640, 480);
// 描画先画面を裏にする
SetDrawScreen(DX_SCREEN_BACK); //4,5,6以外コメントアウト
// 画面全体を白で描画
DrawBox(0, 0, 640, 480, GetColor(255, 255, 255), TRUE); //2,5はコメントアウト
GetDrawScreenGraph(0,0,640,480,MkHandle); //3,6以外コメントアウト
DrawGraph(0, 0, GrHandle, TRUE); //2,5以外コメントアウト
DrawGraph(0, 0, MkHandle, TRUE); //3,6以外コメントアウト
// 描画ブレンドモードをアルファブレンドにする
SetDrawBlendMode(DX_BLENDMODE_ALPHA, 64);
// 中央に四角形を描画する
DrawBox(240, 160, 400, 320, GetColor(0, 255, 0), TRUE);
// 描画ブレンドモードをノーブレンドに戻す。
SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);
// 裏画面の内容を表画面に反映する
ScreenFlip();
// キー入力待ち
WaitKey() ;
// DXライブラリの使用終了
DxLib_End() ;
// 終了
return 0 ;
}