手元の環境で MV1SetMaterialDrawAlphaTest でアルファテストを設定して描画するプログラムを組んでみたのですが、
ウィンドウモード←→フルスクリーンモード を何回切り替えてもアルファテストの設定が無効化することはありませんでした
こちらにテストに使用したプログラムをアップしましたので、よろしければ圧縮ファイルを展開して
中にある MV1SetMaterialDrawAlphaTest.exe を実行して、tさんの環境ではこちらのテストプログラムでも
アルファテストが無効になってしまうか試してみていただけないでしょうか? m(_ _)m
https://dxlib.xsrv.jp/temp/MV1SetMaterialDrawAlphaTest.zip
エンターキーで画面モード切り替え、スペースキーでアルファテストのON/OFF切り替えができます
( 3Dモデルは2枚の平面ポリゴンがあるだけの単純な物となっています )
テストプログラム自体は以下の通りです
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int WindowMode = FALSE ;
int AlphaTest = TRUE ;
int ModelHandle ;
// 画面解像度を設定
SetGraphMode( 1280, 720, 32 ) ;
// 背景色を設定
SetBackgroundColor( 64,64,64 );
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1 ;
// 3Dモデルの読み込みと Alpha Test の設定
ModelHandle = MV1LoadModel( "AlphaTest.mqo" ) ;
MV1SetMaterialDrawAlphaTest( ModelHandle, 0, AlphaTest, DX_CMP_GREATER, 128 ) ;
// メインループ
while( ProcessMessage() == 0 )
{
switch( GetInputChar( TRUE ) )
{
// エンターキーが押されたら画面モードを変更
case CTRL_CODE_CR:
// ウィンドウモードとフルスクリーンモードを切り替え
WindowMode = !WindowMode ;
ChangeWindowMode( WindowMode ) ;
// 3Dモデルの読み込みと Alpha Test の設定
ModelHandle = MV1LoadModel( "AlphaTest.mqo" ) ;
MV1SetMaterialDrawAlphaTest( ModelHandle, 0, AlphaTest, DX_CMP_GREATER, 128 ) ;
break ;
// スペースキーが押されたらアルファテストのON/OFFを切り替え
case ' ':
AlphaTest = !AlphaTest ;
MV1SetMaterialDrawAlphaTest( ModelHandle, 0, AlphaTest, DX_CMP_GREATER, 128 ) ;
break;
}
// 描画先を裏画面に設定
SetDrawScreen( DX_SCREEN_BACK ) ;
// 画面をクリア
ClearDrawScreen() ;
// カメラの設定
SetCameraPositionAndTarget_UpVecY( VGet( 0.0f, 110.0f, -280.0f ), VGet( 0.000000f, 100.000000f, 0.000000f ) ) ;
SetCameraNearFar( 4.000000f, 1000.000000f ) ;
// 3Dモデルの描画
MV1DrawModel( ModelHandle ) ;
// ステータスの表示
DrawFormatString( 0, 0, GetColor( 255,255,255 ), "WindowMode:%s AlphaTest:%s", WindowMode ? "ON" : "OFF", AlphaTest ? "ON" : "OFF" ) ;
// 操作説明
DrawString( 0, 16, "Enter Key : Window Mode ON/OFF Space Key : Alpha Test ON/OFF", GetColor( 255,255,255 ) ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}