トップページ > 過去ログ > 記事閲覧
コンパイラからの動作と違う動作をしてしまう
名前:EMIYA 日時: 2007/09/12 04:18

こんばんは、いつも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 ; }

Page: 1 |

Re: コンパイラからの動作と違う動作をしてしまう ( No.1 )
名前:EMIYA 日時:2007/09/16 20:35

自己解決しました。 なにやら、instance->Radの値が不正になってました・・・ コンパイラから実行すると、非常に大きな値でも動いてたようなんですが、 普通に実行すると大きな値になりすぎると、画像が表示されなくなっていたようです。

Page: 1 |