HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0716
むらいし大きな画像の表示3未解決


むらいし

リンク

2010/7/16(Fri) 22:21:46|NO.33737

gcopyで大きな画像を表示する場合、処理時間がかなりかかってしまいますよね。
画面最大化したときの、背景の画像だけでもかなりの時間がかかってしまいます。
画面上にはさまざまな物体が描画され、移動するので、画面更新をしないわけにはいきません。
ゲームではなくツールなので、画面解像度を無理やり変えることも望ましくありません。
以前ゲームを作ったときは、低解像度で描画して、
全ての要素を描画したバッファを拡大してメインスクリーンに表示という方法を仕様し、
画面の解像度は変更しませんでした。
できればHSP標準命令のみで処理をしたいです。
まだ最適化はできると思うのですが、どうしても安心の速度領域にしたいです。


ええと…ごちゃごちゃになってしまいましたが、
高速に描画する小技 みたいなのがあれば教えてください。

//初期化 #include "d3m.hsp" ScreenSize = 1024;このスクリーンサイズを減らすとかなり高速になる。 buffer 1, ScreenSize,ScreenSize screen 0, ScreenSize,ScreenSize //メインループ repeat 描画処理 loop //描画処理 #deffunc 描画処理 await redraw 1 redraw 0 color 255,255,255 boxf color 0,0,0 pos 0,0 mes "FPS="+d3getfps() gcopy 1,0,0,ScreenSize,ScreenSize return



この記事に返信する


GENKI

リンク

2010/7/17(Sat) 00:34:39|NO.33740

これで多少は?

#deffunc 描画処理 redraw 1 await 0 redraw 0 pos 0,0 gcopy 1,0,0,ScreenSize,ScreenSize mes "FPS="+d3getfps() return



むらいし

リンク

2010/7/18(Sun) 17:31:00|NO.33768

なるほど…背景画像の後ろは塗りつぶす必要はないですね
少し早くなりましたが、どうしてもgcopyでは限界でしょうか…
できるだけredrawやgcopyの範囲を減らす方法はないでしょうか



GENKI

リンク

2010/7/18(Sun) 17:56:15|NO.33769

> できるだけredrawやgcopyの範囲を減らす方法はないでしょうか

redraw 命令のp2〜p5を指定して範囲を限定するとか。
ツールならループ処理するんじゃなくて、イベント発生時など必要なタイミングにだけ書き換えるようにしては?
あるいはawiatを大きくとってフレームレートを下げるとか。


> できればHSP標準命令のみで処理をしたいです。

どうしても処理速度を上げたかったらDirectX系プラグインの導入を検討したほうがいい。
あとは…Artlet2DでGDI+使えば多少は速くなるかもしれませんね。GDI+はXPと7ではハードウェア処理らしいので。



ONION software Copyright 1997-2023(c) All rights reserved.