« [改造記]まずは初期設定 | トップページ | [改造記]使えなくなる命令 »

[改造記]画像の準備

続いて使用画像の準備です。奮闘記にも登場したバッファローマン(をい)。DirectXを使う場合、通常のHspのバッファー以外にオフスクリーンバッファというのを用意することになります。言ってみれば悪魔超人のバッファローマンとキン肉マンの仲間になったバッファローマンの2種類がいるようなもんです(余計わかりづらい)。

通常のHspの画面描写
標準命令の場合

通常のHspの場合、上記のようにコピーする画像をbufferに入れておき、そこからscreenへgcopyで転送するという手法が一般的だと思います。これにredrawを組み合わせると高速な描写が可能になるというわけです。

hspdx.dllを用いた場合、DirectX専用のオフスクリーンバッファを作り、通常のバッファーからes_bufferで転送して、そこから画面上にコピーなどを行う形になります。

その際注意しなければならないのが、HspのDirectXは16bitカラーに対応していないという事です。つまりpicloadでbuffer→es_bufferで転送する元の画像は256色以内(本当は236色)に抑えておきましょう。「D-Pixed」等の256色お絵かきソフトを使って減色するのが一番いいかな?(※注_最新バージョンでは対応しているようです)

hspdx.dllの画面描写
hspdx.dllの場合


;■ バッファへ画像の読みこみ
buffer 2,640,480,1 ;バッファ作成
pos 0,0 : picload "sampledx.bmp",1 ;バッファへ読み込み
es_buffer 0,0 ;オフスクリーンバッファへの転送
if stat=1 : goto *dxerr3 ;成否判定

es_screenで初期化したサイズと、es_bufferで確保するサイズは同じ大きさになるので、解像度を320x240にした場合は、bufferのサイズは320x240以上にはできません。また、マニュアルにはオフスクリーンバッファは10枚取れると書いてありますが、実は8枚までしか取れないというバグがあります。これもhspdxfix.dllを使うことで解決できます。最新のバージョンでは64枚まで取れるようになってるので、画像をたくさん使う場合でも対応可能です。

こ のオフスクリーンバッファへの転送は、メインルーチンではやらないほうが無難だと思います。リアルタイムで画面描写してる最中に転送を行うと、やっぱりそ の瞬間ウェイトがかかってしまうはずです。シューティングゲームなら面と面の間にやるとか、初期設定の段階で全部用意しちゃっておく方がいいでしょう。私 の場合、途中での読み込みをやるとわけわからなくなるという理由でやってません^^;

« [改造記]まずは初期設定 | トップページ | [改造記]使えなくなる命令 »

3.改造記」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67538/57445618

この記事へのトラックバック一覧です: [改造記]画像の準備:

« [改造記]まずは初期設定 | トップページ | [改造記]使えなくなる命令 »