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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
1122
太郎HSP3DISH(Windows)での画像ファイル限界枚数(限界サイズ?)について4解決


太郎

リンク

2020/11/22(Sun) 09:05:31|NO.91832

はじめまして 透過PNGが読み込めるので、開発にてHSP3DISH 非常に重宝しております。先ず開発者様に感謝を。

本題でありますが、現在HSP3DISHにて私ゲーム製作をしており、透過PNG等を含んだ画像ファイル(1ファイルあたり10MB弱ほど)を16枚程読み込んで使用しております。(曖昧ですみません。)
その辺りのファイル数から、そこから更に画像を追加すると、エラー13(おそらく追加した画像が正常に読み込まれていない?)となり、テスト起動も不可能状態となります。

私が知りたいのは、HSP3DISHにてそういった読み込む素材の枚数や容量に制限等はあるのかということと、その対策手段がもしもあれば知りたいな。ということ。(素材をパーツごとに分けて読み込む等の手段はありますが、今回はあくまでも仕様的な対策手段が知りたいので、すみませんがそれ以外の方法をお願いしますm(_ _)m)
また、Windowsでの運用のみで考えているので、通常版HSPでも透過PNGを手軽に扱える方法があれば、質問を重ねるようで申し訳ありませんが、よろしかったらこちらも教えていただきたくも思っています。

拙い文章で、伝わりづらい箇所もあるかと思いますが、もし参考になるような情報だけでも結構ですので、教えていただけるとありがたいです。よろしくお願いしますm(_ _)m



この記事に返信する


MillkeyStars

リンク

2020/11/22(Sun) 12:14:30|NO.91834

画像のサイズが cx.16384 x cy.16384 (計算上限界[実際は、もっと小さい])を超えるサイズの場合、メモリに画像を展開できない為、エラー 13が発生します。
また、画像のサイズが超えない場合でも画像をメモリに展開する理由により複数のバッファを作成できない場合も、エラー13が発生します。

それ以外の原因としては、png フォーマットが対応していない場合もエラーとなります。

画像の展開時に必要なメモリのサイズは、計算式 CX * CY * 4 = サイズです。一時領域とバッファの両方が必要となるので 2倍必要となります。
(複数枚画像を読み込みする場合、一つの画像を展開してからバッファに書き込みます。そのバッファのサイズを除く新たな一時領域のサイズとバッファのサイズが必要ですのでご注意を)



zakki

リンク

2020/11/22(Sun) 16:07:22|NO.91835

> 透過PNG等を含んだ画像ファイル(1ファイルあたり10MB弱ほど)を16枚程読み込んで使用しております。(曖昧ですみません。)

大まかにPNGで1/10に圧縮されてるとして100MB*16の1.6GB程度のメモリが必要で32ビット版の限界にかかりそうです。
高解像度ディスプレイ対応したりHGIMG4ゲーム作ったりとかだとdishも64ビット版欲しいかも



zakki

リンク

2020/11/22(Sun) 19:43:58|NO.91836

hsp3gp.exeの64ビット化は普通にコンパイルしなおすだけでサンプルは動きました。
https://github.com/zakki/openhsp/tree/win32-x64

hsp3dish.exeはDirectX8使ってるのがネックでそれなりに面倒そうです。



太郎

リンク

2020/11/22(Sun) 23:52:14|NO.91838

MillkeyStars様 zakki様
なる程、やはり 読み込み過ぎには注意を ということですね。
仕様的な面での内容 とても解りやすいご説明でした。ありがとうございます。
お二方様の説明から、バッファを解放してその都度読み出すという方法を考え付き、
その様にスクリプトを組み直し実行したところ、思い通りに動作しましたので、解決とさせていただきます。
とても勉強になりました。



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