手元で以下のようなテストプログラムを組んで試してみましたが、SetDrawAlphaTest の設定は
問題なく反映されていました
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int ModelHandle ;
int ModelAlpha ;
int AlphaTestParam ;
// ウインドウモードで起動
ChangeWindowMode( TRUE );
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1;
ModelHandle = MV1LoadModel( "DxChara.x" ) ;
SetDrawScreen( DX_SCREEN_BACK ) ;
SetCameraPositionAndTarget_UpVecY( VGet( -0.000f, 754.656f, -919.505f ), VGet( -0.000f, 376.695f, -7.027f ) );
ModelAlpha = 255 ;
AlphaTestParam = 0 ;
while( ProcessMessage() == 0 )
{
ClearDrawScreen() ;
DrawBox( 0, 0, 640, 480, GetColor( 0,128,0 ), TRUE ) ;
if( CheckHitKey( KEY_INPUT_LEFT ) == 1 && ModelAlpha > 0 ) ModelAlpha -- ;
if( CheckHitKey( KEY_INPUT_RIGHT ) == 1 && ModelAlpha < 255 ) ModelAlpha ++ ;
if( CheckHitKey( KEY_INPUT_DOWN ) == 1 && AlphaTestParam > 0 ) AlphaTestParam -- ;
if( CheckHitKey( KEY_INPUT_UP ) == 1 && AlphaTestParam < 255 ) AlphaTestParam ++ ;
SetDrawAlphaTest( DX_CMP_GREATER, AlphaTestParam ) ;
MV1SetOpacityRate( ModelHandle, ModelAlpha / 255.0f ) ;
MV1DrawModel( ModelHandle ) ;
DrawFormatString( 0, 0, GetColor( 255,255,255 ), "ModelAlpha:%d TestAlpha:%d", ModelAlpha, AlphaTestParam ) ;
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End();
// ソフトの終了
return 0;
}
上下キーでアルファテストでキャンセルされるアルファの閾値を、
左右キーでモデルの描画のアルファ値を変更できます
モデルの描画のアルファ値がアルファテストのアルファ値を下回るとモデルが描画されなくなるはずですので、
よろしければ Yabさんの環境でも正常に動作するかお試しになってみてください m(_ _)m
( 使用しているモデルはDXライブラリのサンプルプログラム実行用フォルダに入っている DxChara.x です )
> ・SetDrawAlphaTest()の動作は上記認識であっていますか?
はい、SetDrawAlphaTest を呼んだ時点では Direct3D には反映されません、MV1DrawModel で
モデルを描画する過程で適用しています
> ・仮にあっていたとすると、設定を即座(モデルの描画前に)に反映させる方法は存在しますか?
モデルの描画時に反映させています