トップページ > 過去ログ > 記事閲覧
MakeGraphについて
名前:kame 日時: 2012/05/30 06:49

現在、ゲームを作っていて 描画した画面をラスタースクロール処理 (画面を1ラインずつ動かす) を実装してためしに動かしています、 以下コードです void ScreenNoise() { int i; int tempPat; int tempScreen; float x; float theta; tempScreen = MakeGraph( FIELD_MAX_X, FIELD_MAX_Y ) ; // 画面のサイズと同じサイズのグラフィックを作成 GetDrawScreenGraph( 0 , 0 , FIELD_MAX_X, FIELD_MAX_Y, tempScreen ) ; // 画面データの取りこみ for ( i = 0; i < FIELD_MAX_Y; ++ i ) { ++theta; x = FIELD_MAX_X / 2 + (float)( sin( theta * PI / 180 ) * 20 ); tempPat = DerivationGraph( 0, i, FIELD_MAX_X, 1, tempScreen ) ; //画像抜き出して新しく作成 DrawSprite( x, i, SET_CENTER, FIX, tempPat, DX_BLENDMODE_NOBLEND ); //自作の描画関数です // 描画が終ったのでグラフィックをメモリ上から削除する DeleteGraph( tempPat ) ; } DeleteGraph( tempScreen ) ; } これで動かしてみたところ、まあ処理が重たかったので、 今改善点を模索しているところなのですが 時間がたつにつれ更に重くなっているの気がするので 何かを解放し損ねているのでは?と考えたのです。 そこでMakeGraphなのですが、この関数で作った 画像データはDeletaGraph()で解放するものなのなのか? という考えにいたったのですが、どうなんでしょうか?

Page: 1 |

Re: MakeGraphについて ( No.1 )
名前:いっち 日時:2012/05/30 19:56

> そこでMakeGraphなのですが、この関数で作った > 画像データはDeletaGraph()で解放するものなのなのか? DXライブラリが保持できる画像ハンドル数にも限界はありますし、ビデオメモリの容量にも限界がありますので、 何らかの問題が出てくる可能性はありますが、解放する必要があるかどうかは状況によります。 > 今改善点を模索しているところなのですが > 時間がたつにつれ更に重くなっているの気がするので DXライブラリにも GetNowCount や GetNowHiPerformanceCount といったタイマがありますので、 実際に計測なさってみてはいかがでしょうか? 一般的に GetDrawScreenGraph は重いので、重くても問題ない場合以外の使用は避けたほうが良いと思います。
Re: MakeGraphについて ( No.2 )
名前:管理人 日時:2012/06/03 19:06

> そこでMakeGraphなのですが、この関数で作った > 画像データはDeletaGraph()で解放するものなのなのか? はい、MakeGraph で作成した画像は DeleteGraph で削除されるまでは メモリを占有し続けますので、必要がなくなったら DeleteGraph で削除してください 自動的に解放されることはありません
Re: MakeGraphについて ( No.3 )
名前:kame 日時:2012/06/05 22:18

いっち様、管理人様 ご回答ありがとうございます、 教えていただいた事を参考にしつつ 色々試してみたいと思います

Page: 1 |