> ・1つ目
> DrawRotaGraph3Dを使用して3D空間に画像を表示し、SetDrawBlendModeを使ってフェードアウトさせているのですが、
> SetDrawAlphaTestを使用しているため、フェードが上手くいきません(mfFadeが128を下回ったらパッと消える)。
> mfFadeが128以下になったらSetDrawAlphaTestの値を小さくして対処しようとしたのですが、そうすると透明な四角形が違和感ある形で出てきて、
> うまくいきませんでした(フェードアウトは綺麗にされます)。
どのような画像を表示されているのかが不明なので的確なご返答となっていないかもしれませんが、
SetDrawAlphaTest の値を 128 以下にしても透明な四角形が表示されないように
画像の方を調整していただくしかないと思います
> ・2つ目
> 画像が実際に3D空間上に現れてフェードアウトする際、後ろの3Dモデルは透過で見えているのですが、
> DrawGraph3Dで表示した他の画像が全く見えなくなっていました。これは描画順などが原因でしょうか?
手元で以下のような、載せていただいたプログラムを使用した DrawRotaGraph3D の描画の後、
DrawGraph3D で単純に描画する、というテストプログラムを組んでみたのですが、
DrawGraph3D で描画した画像が表示されないということはありませんでした
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
// ウインドウモードで起動
ChangeWindowMode( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1 ;
// 画像の読み込み
int GrHandle = LoadGraph( "Test1.bmp" ) ;
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK ) ;
// メインループ
while( ProcessMessage() == 0 )
{
// 画面のクリア
ClearDrawScreen() ;
int a, b;
GetDrawAlphaTest(&a, &b);
// フェードアウトさせる
SetDrawBlendMode(DX_BLENDMODE_ALPHA, 128);
SetDrawBright(0,255,0);
SetDrawAlphaTest(DX_CMP_GREATEREQUAL, 128);
DrawRotaGraph3D(
320, 240, 0,
1.0, 0.0,
GrHandle,
TRUE
);
SetDrawAlphaTest(a, b);
SetDrawBright(255,255,255);
//フェード後始末
SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);
DrawGraph3D( 128, 0, 0, GrHandle, TRUE ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
なので現状では『全体のコードを拝見しないと原因は不明』というご返答となります