トップページ > 記事閲覧
スクロールがぎこちないです
名前:X 日時: 2017/10/06 13:32

深刻な事態ではないのですが、画面をスクロールさせたり、移動させたりした際、処理落ちもどきで動きがガビガビでぎこちなくなります。 マップチップを張り合わせたデータをDrawRectGraphを連発して1マスずつ描画しているのですが、 これぐらいで処理落ちするとは思えず、原因がわかりません。 なめらかにスクロールさせる方法を探しています。 もしかして、3Dでビルボードでやった方が処理が早いという事はあるでしょうか? ループは、SetDrawScreen(DX_SCREEN_BACK)後、 1.ProcessMessage() 2.キー入力取得など 3.描画(DrawRectGraphを使って解像度768×1024の画面に1マス64×64のマップで画面一杯描画) 4.ScreelFlip() 5.「1.」へ戻る という形でやっています。 画面モード480×640などで、「3.」の描画部分をすっとばすと毎秒60フレームっぽくなるのですが、 描画を入れると毎秒30フレームっぽくなります。
メンテ

Page: 1 |

Re: スクロールがぎこちないです ( No.1 )
名前:X 日時:2017/10/06 19:14

どうやらDrawStringでメニュー一覧みたいなのを表示しているのが負荷が大きかったようです。 ScreenFlip()ではなくタイマのウェイトでかかる時間を計測したのですが、 DrawStringをはずしてもまだ1フレーム5ミリ秒しか余裕がなく、ギリギリです。(動きはなんとか滑らかになります。) マップを1マスずつ描画するのがいけないのでしょうか。
メンテ
Re: スクロールがぎこちないです ( No.2 )
名前:BayLeaf 日時:2017/10/06 19:22

描画の前にClearDrawScreen()の処理はされていますか? こちらを行わないと画面の初期化がされないので当然ですが処理が重くなります。
メンテ
DrawString()が重い ( No.3 )
名前:X 日時:2017/10/07 06:34

ああ、有難うございます。 書き忘れましたが、ClearDrawScreen()も先頭で使うようにしています。(背景色は変えています。) ClearDrawScreen()を使った方が返って早いのですね、わかりませんでした。 動作テスト用のDrawString()を全部消したらマップを描画しても1ミリ秒以内に全部できる事がわかりました。 タイトルの問題は解決してしまいました。 DrawString()2,3回でもグッと負荷がかかっていたようです。 DrawString()はフォントの大きさをデフォルトのものから変更して使っています。 デフォルトのフォントサイズでも動作が遅くなります。 フォント系は 設定はSetFontSize()だけ使って後はDrawString()で描画しているだけなのですが何か設定でも悪いんでしょうか。 私の環境では、WindowsAPIのDrawText()などをフォントの大きさを変えて使うと負荷が強大になるという現象が起きます。 (関係ないけどScratchBlt()も負荷が超大きいです。) リアルタイムで動くゲームではメニュー項目名など固定のテキストや数字(HP/最大HPなど)は画像化した方が良いでしょうか?
メンテ
DrawString()が重い ( No.4 )
名前:X 日時:2017/10/07 06:42

× > タイトルの問題は解決してしまいました。 ○ 前のタイトル(スクロールがぎこちない)の問題は解決してしまいました。 DrawString()一回だと負荷の違いはわかりませんが、2連続で使うと10ミリ秒とか かかります。
メンテ
Re: スクロールがぎこちないです ( No.5 )
名前:管理人 日時:2017/10/07 09:10

SetFontSize でフォントのサイズを変更する処理は非常に重いので、複数のサイズのフォントを 同時に使用される場合は事前に CreateFontToHandle でそれぞれのサイズのフォントハンドルを 作成してから DrawStringToHandle で描画するようにしてください、処理を軽くすることができます <CreateFontHandle> https://dxlib.xsrv.jp/function/dxfunc_graph2.html#R17N10
メンテ
Re: スクロールがぎこちないです ( No.6 )
名前:X(解決) 日時:2017/10/07 20:06

DrawStringToHandleを使ったら見違えるように早くなりました。 リスト一覧などを表示してもスクロールが滑らかになりました。 ありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存