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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0324
べなりあHSPDXで大量の画像を読み込むには…7解決


べなりあ

リンク

2010/3/24(Wed) 18:20:02|NO.31532

どうしても解決出来ないので、質問させて頂きます。

現在HSPDXを用いてBMSプレイヤーというものを作っているのですが、
BMSを再生する為には、1000枚以上の画像を順番に表示していく必要があります。
楽譜データを元にwavを流しながら再生するので、毎フレーム読み込むと重くなるので出来ません。

ですが、es_bufferではバッファが64個分しか取れず、全ての画像を読み込むことが出来ません。
また、各画像のサイズが256*256なので、出来れば1つのバッファに1つの画像を読み込ませたいです。

何とも制限が多くて申し訳ないのですが、どうすれば大量の画像を読み込むことが出来るでしょうか。
ご教授頂けると非常に助かります。



この記事に返信する


しきり2

リンク

2010/3/24(Wed) 19:28:13|NO.31533

一度に読み込むとメモリを大量に食い
OSの動作が不安定になるのでオススメしません。
ストリーミングといって、

1再生  → 2再生 →3再生
2読み込み 3読み込み 4読み込み
      1破棄   2破棄

といった風に読み込みながら再生する形式のほうをオススメします。


あとHSPDXは開発環境が停止しているし、
ドライバによっては正しく表示されないことがあるので、
HSPDXFIXまたはHGIMG3を使用することをオススメします。

HGIMG3の方がHSPDXより数倍パフォーマスが高いと思います。



べなりあ

リンク

2010/3/24(Wed) 20:43:10|NO.31534

申し訳ありません。説明不足でした。
楽譜データを元に音源となるwavを流しながら再生するので、
再生中に画像を読み込むと一瞬の間が生じ、音が飛んでしまうので出来ません。
メモリについてですが、せいぜいIEと同じほどしか食いませんので大丈夫なようです。

最近のHSPに元から入っているHSPDXは、HSPDXFIXと同じものという記述をどこかで見かけたのですが…
どちらにせよ、HSPDXFIXの方でもバッファの数は同じなので無理ですね…。

HGIMG3なんですが、どうも他に使っているプラグインと相性が悪いようで、
hgdrawの所でなぜか「パラメータの省略は出来ません」のエラーが出てしまいます。
どのプラグインとの相性が悪いのかは分かったんですが、それを使用しない、という訳にも行かず…

色々教えてくださったのに申し訳ないのですが、引き続き回答頂けるとありがたいです。



しきり2

リンク

2010/3/24(Wed) 20:46:22|NO.31535

hsp32\common\hgimg3.asの#regcmd 18という所を19にかえてみれば
使えます。
音の再生にはMCIを使用しているんですか?
それともDirectSoundを使っているんですか?



べなりあ

リンク

2010/3/24(Wed) 21:33:00|NO.31537

お早い回答ありがとうございます。

無事、HGIMG3がちゃんと動きました。
ずっと他のプラグイン側のregcmdをいじってました…^^;

音の再生はDirectSoundを使用しています。
こちらも大量のwavを読み込む必要があり、更にoggの読み込みも少々必要でしたので、
ovplayというプラグインを使用させて頂いています。

HGIMG3なんですが、画像の描画はhgrotateしかないのでしょうか…?
gcopyのような動作が望ましかったのですが、hgrotateでは回転も可能なせいか、
偶数ドットの幅をコピーしようとすると1ドット分削れて表示されてしまいます。
たかが1ドットではあるんですが、結構痛手に…

若干元の趣旨から外れかけていますが、引き続きよろしくお願い致します。



しきり2

リンク

2010/3/24(Wed) 21:51:40|NO.31538

addplateという手もありますが、
hgrotateと違い3d機能の側面も持つため、
パフォーマンスが多少減ります。
具体的には
32*32のポリゴンを1000枚表示したときのFPS
hgrotate 162
addplate 124

それか
hgrotate
gmodeとhgrotateのサイズを1プラス
してみては?
テクスチャはちゃんとバイリニア補間されるんで見た目は変わりませんよ。



りゅん

リンク

2010/3/24(Wed) 22:05:34|NO.31539

スプライトなら1ドット単位でも正確に描画できると思います。



べなりあ

リンク

2010/3/24(Wed) 23:36:36|NO.31542

再び回答ありがとうございます。

出来るだけ軽い動作にしたいのでaddplateは少し厳しいものがありますね…。
また、サイズを1増やしてみましたが今度は余計な所までコピーしてしまいました。

色々試してみましたが、スプライトが無難なようです。

回答して頂いたお二人方、ありがとうございました。



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