こんばんは、いつもDXライブラリをありがたく使わせてもらってます。
今回はちょっとよくわからない事が起きました。
ゲームを作っていてこまめにテストしてたんですが、知り合いにちょっと見てもらおうと思いコンパイラからではなく、
コンパイルして出来た、実行ファイルを直接実行してみたんですが・・・
なぜか、DrawRotaGraphを使っている描画で、回転をさせている物があると
その画像だけが表示されなくなったり、特定の画像が全て表示されなくなったりします。
DrawRotaGraphを使っていても、拡大縮小や反転だけしか使っていないものはいいのですが、やはり回転させると不具合が発生します。
そして、一番悩んでるのがこれはコンパイラを通して実行させるときには問題がないのに、Release、Debugどちらだろうと関係なく
コンパイルされて出来た実行ファイルを直接実行させると、なぜか上記の様な動作不良を起こします。
使っているのはVisual Stdio.net 2003です。
テキストデータを読み込ませてるので、最初はそれが原因かと思ったのですが、
必要なファイルを全てコピペで持ってきても、コンパイラから実行するときとは違う動作をします。
描画部分のソースはこんな感じです。
static bool _DrawObject( PObject object, float x, float y, int width, int height )
{
ObjectEx *instance ;
instance = (ObjectEx *)object ;
if( instance->Image == NULL )
{
return FALSE ;
}
if( instance->Opacity != 255 )
{
SetDrawBlendMode( DX_BLENDMODE_ALPHA, instance->Opacity ) ;
}
if( instance->Rote || instance->Revers || instance->Extend != 1.0F )
{
SetDrawMode( DX_DRAWMODE_BILINEAR ) ;
if( instance->Rote )
{
DrawRotaGraph( (int)( x + width / 2 ) , (int)( y + height / 2 ) , instance->Extend ,
instance->Rad , *instance->Image, TRUE , instance->Revers ) ;
if( instance->Rad >= 360.0F || instance->Rad <= -360.0F )
{
if( instance->Rad >= 360.0F )
{
instance->Rad -= 360.0F ;
}
else
{
instance->Rad += 360.0F ;
}
}
else
{
instance->Rad += instance->Rote / 10.0F ;
}
}
else
{
DrawRotaGraph( (int)( x + width / 2 ) , (int)( y + height / 2 ), instance->Extend ,
NULL, *instance->Image , TRUE, instance->Revers ) ;
}
SetDrawMode( DX_DRAWMODE_NEAREST ) ;
}
else
{
DrawGraph( (int)x, (int)y, *instance->Image, TRUE ) ;
}
if( instance->Opacity != 0xff )
{
SetDrawBlendMode( DX_BLENDMODE_NOBLEND, NULL ) ;
}
return TRUE ;
}