ウィンドウを透過した時に3Dモデルの輪郭線が消える
Posted: 2016年4月15日(金) 12:00
件名の通りですが、ウィンドウを透過した時に3Dモデルの輪郭線が消えます。
初めは、元より輪郭線が表示出来ていないと思い、標準のウィンドウに戻し、画面に白いボックスを表示して確認を行いました。
又、元より輪郭線が描かれていないのかも、と思いMMDでも確認を行いました。
確認の結果、しっかり輪郭線は表示されている事が確認出来ました。
確認の為に用いたコードを載せておきます。
コードのコメント部分を有効にすると、ウィンドウが透過するのですが、これを有効にすると輪郭線が消えます。
初めは、元より輪郭線が表示出来ていないと思い、標準のウィンドウに戻し、画面に白いボックスを表示して確認を行いました。
又、元より輪郭線が描かれていないのかも、と思いMMDでも確認を行いました。
確認の結果、しっかり輪郭線は表示されている事が確認出来ました。
確認の為に用いたコードを載せておきます。
コードのコメント部分を有効にすると、ウィンドウが透過するのですが、これを有効にすると輪郭線が消えます。
include "DxLib.h"
int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int )
{
ChangeWindowMode(TRUE) ; // ,SetWindowPosition( 840 , 412),SetGraphMode( 500, 500, 32 ), SetWindowStyleMode( 2 ), SetUseBackBufferTransColorFlag(true);
if ( DxLib_Init( ) == -1 ) return -1;
const float kScale = 50.0f;
int ModelHandle = MV1LoadModel( "dat/imarine/imarine_nomal.pmd" );
MV1SetPosition( ModelHandle, VGet( 320.0f, -240.f, 600.f ) );
MV1SetScale( ModelHandle, VGet( kScale, kScale, kScale ) );
int MaterialNum = MV1GetMaterialNum( ModelHandle );
for ( int i = 0; i < MaterialNum; i++ ) {
float DotWidth = MV1GetMaterialOutLineDotWidth( ModelHandle, i );
MV1SetMaterialOutLineDotWidth( ModelHandle, i, DotWidth / kScale );
}
SetDrawScreen( DX_SCREEN_BACK );
while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) {
ClearDrawScreen( );
DrawBox(0,0,640,480,GetColor(255,255,255),TRUE);
MV1DrawModel( ModelHandle );
ScreenFlip( );
}
DxLib_End( );
return 0;
}