以下のようにプログラムを少し変更したところ正常に Live2D でレンダリングされたモデルを透過表示できましたので
よろしければご覧ください m(_ _)m
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int Screen ;
int PMAScreen ;
int SoftImage ;
// タイトルを test に変更
SetMainWindowText( "Test" ) ;
// ウインドウモードに変更
ChangeWindowMode( TRUE ) ;
//描画先を裏画面に変更
SetDrawScreen( DX_SCREEN_BACK );
// Direct3D9Ex ではなく Direct3D9 を使う
SetUseDirect3D9Ex( FALSE ) ;
// 画面解像度の設定
SetGraphMode( SCREEN_SIZE_X, SCREEN_SIZE_Y, 32 ) ;
// 透過ウインドウを使用する指定を行う
// ( UpdateLayerdWindowForPremultipliedAlphaSoftImage や UpdateLayerdWindowForSoftImage などの
// UpdateLayerdWindow系を使用する場合は SetUseBackBufferTransColorFlag ではなく
// SetUseUpdateLayerdWindowFlag を使用します )
SetUseUpdateLayerdWindowFlag( TRUE ) ;
// DXライブラリ初期化
if( DxLib_Init() == -1 )
{
return -1;
}
// 描画対象にできるアルファチャンネル付き画面を作成
// ( MakeScreen や MakeARGB8ColorSoftImage などは DxLib_Init の前では使用できません )
Screen = MakeScreen( SCREEN_SIZE_X, SCREEN_SIZE_Y, TRUE ) ;
// 乗算済みアルファの画像を格納する為のアルファチャンネル付き画面を作成
PMAScreen = MakeScreen( SCREEN_SIZE_X, SCREEN_SIZE_Y, TRUE ) ;
// 画面取り込み用のソフトウエア用画像を作成
SoftImage = MakeARGB8ColorSoftImage( SCREEN_SIZE_X, SCREEN_SIZE_Y ) ;
// Live2D 初期化
Live2D::init();
// DXライブラリが使用している Direct3DDevice9 を取得
g_Device9 = (LPDIRECT3DDEVICE9)GetUseDirect3DDevice9();
// フォントサイズの変更
SetFontSize( 8 );
// Live2D データの読み込み
if(!Create())
{
return -1;
}
// メインループ
while( ProcessMessage()==0 )
{
// 描画先を仮画面に変更
SetDrawScreen( Screen ) ;
// 画面をクリア
ClearDrawScreen();
// 何か描画しないと Live2D の正常な描画結果が得られなかったので、
// Aという文字を人物の後ろに描画
DrawString( SCREEN_SIZE_X / 2, SCREEN_SIZE_Y / 2,"A", GetColor(255,255,255));
// Live2D の描画
Render2D();
// 描画した内容を乗算済みアルファに変換
GraphFilterBlt( Screen, PMAScreen, DX_GRAPH_FILTER_PREMUL_ALPHA ) ;
// 描画した内容を乗算済みアルファに変換した画像を描画対象にする
SetDrawScreen( PMAScreen ) ;
// 乗算済みアルファに変換した画像の取り込み
GetDrawScreenSoftImage( 0, 0, SCREEN_SIZE_X, SCREEN_SIZE_Y, SoftImage ) ;
// 取り込んだ乗算済みアルファの画像で透過ウインドウを更新
UpdateLayerdWindowForPremultipliedAlphaSoftImage( SoftImage ) ;
// 少し( 13ミリ秒 )待つ
// ( ScreenFlip と異なり自動的にウエイト処理をしてくれないので )
WaitTimer( 13 ) ;
}
// DXライブラリ使用の終了処理
DxLib_End() ;
// ソフトの終了
return 0 ;
}