| 画像の準備 | ||||
続いて使用画像の準備です。奮闘記にも登場したバッファローマン(をい)。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の画面描写 ![]()
es_screenで初期化したサイズと、es_bufferで確保するサイズは同じ大きさになるので、解像度を320x240にした場合は、bufferのサイズは320x240以上にはできません。 このオフスクリーンバッファへの転送は、メインルーチンではやらないほうが無難だと思います。リアルタイムで画面描写してる最中に転送を行うと、やっぱりその瞬間ウェイトがかかってしまうはずです。シューティングゲームなら面と面の間にやるとか、初期設定の段階で全部用意しちゃっておく方がいいでしょう。私の場合、途中での読み込みをやるとわけわからなくなるという理由でやってません^^;
|