トップページ > 過去ログ > 記事閲覧
最新DXLIBを使ってみましたが、動作が遅くなりました
名前:wakahage 日時: 2008/10/11 22:20

はじめまして。DXライブラリ愛用者の一人です。 サイトでDXLIBが最新版になっていたので、私(XP SP3,Borland 2.31 )がそれで コンパイルし、実行したところ動作が少し遅くなってしまいました(平均fps<= 45)。 念のため元DXLIB( 2.22b)で再コンパイルしたら元の速度にもどりました。 最新DXLIBは新機能が多々追加されているので是非使用したいのですが、やはり動作速度は重要です。 なぜ動作が遅くなったのでしょうか?

Page: 1 |

Re: 最新DXLIBを使ってみましたが、動作が遅くなりました ( No.1 )
名前:ライブラリ使用者 日時:2008/10/11 23:54

まず何が遅くなったのか、はっきりさせないとまずいと思います。 元のソースでもいいかもですが、できるならなるべく簡潔なソースを提示できれば確認及び修正対応後の確認も楽にできるようになります。 今の質問では、漠然としすぎています。 あとfps45となっていますが、元が60あったのがでしょうか?
Re: 最新DXLIBを使ってみましたが、動作が遅くなりました ( No.2 )
名前:wakahage 日時:2008/10/12 00:25

はい 59近くあります。 ループ内で1000行ぐらいあり、描画関係のDXLIB関数も多く使用してます。また格段に遅くなるわけではないのでどの関数が原因なのかわからないのです。 いま1秒間あたりの実行回数を関数ごとに調べています
Re: 最新DXLIBを使ってみましたが、動作が遅くなりました ( No.3 )
名前:wakahage 日時:2008/10/12 16:11

おそらく原因であろう関数を載せます DrawRotaGraph DrawExtendGraph DrawModiGraph Graph(Un)Lock でのアクセス SoundMem 系 --全体にした設定(参考)-- SetPriorityClass(GetCurrentProcess(),BELOW_NORMAL_PRIORITY_CLASS); SetOutApplicationLogValidFlag(0); ChangeWindowMode(TRUE); SetGraphMode(S_x,S_y,32); SetMainWindowText("落とし玉"); SetWindowIconID(123) ; SetDoubleStartValidFlag(1); if(DxLib_Init() == -1) return(-1); SetWindowVisibleFlag(1); SetUseMenuFlag(1) ; SetDisplayMenuFlag(0) ; SetDragFileValidFlag(1); SetAlwaysRunFlag(1); SetFontSize(16); --------------------------- ひとつ気になったのですが、 垂直同期信号の少し前にScreenFlipを呼び出すのと少し後に呼び出すのはかなり差が出ますか?
Re: 最新DXLIBを使ってみましたが、動作が遅くなりました ( No.4 )
名前:YKN 日時:2008/10/12 13:43

>垂直同期信号の少し前にScreenFlipを呼び出すのと少し後に呼び出すのはかなり差が出ますか? 私も厳密に知ってるわけじゃありませんので 間違えてるかもしれませんが、 ScreenFlipはデフォルトで垂直同期信号待ちするから 垂直同期信号の後にScreenFlipやると 2フレーム分かかるんじゃないですか?
Re: 最新DXLIBを使ってみましたが、動作が遅くなりました ( No.5 )
名前:wakahage 日時:2008/10/12 16:07

やはりそうなんですか… では2.22cでも1フレーム内に1ループするように改良します。 ライブラリ使用者さん、YKNさん、ありがとうございますです

Page: 1 |