はじめに

ここではHspにDirectXの機能を付加することができる「hspdx.dll」についての解説を行います。予めお断りしておきますが、「奮闘記」や「解剖記」を読んでも全然意味がわからない〜という方は、秀和システムの「Hspプログラミング入門」等を通読して、基本的なことは押さえてからここの解説に移って下さい。

Hspは非常に高速な言語です。ただ、リアルタイムで処理するプログラムになると、標準命令だけではどうしても限界があります。それは画面描写速度が原因となる部分が殆どです。これは別にHspだけの問題ではありません。Windowsの限界なのです。「Aeolianation」を見ていただければわかると思いますが、Hsp標準命令だけでもあれくらいはできます。実はウィンドウズサイズがそれほど大きくないので負荷が少ないという理由もあるのですが^^;

そこで登場したのがDirectXです。これはWindowsの弱点を補うべく、Mircosoftが開発した「高速な画面描画のためのコンポーネント」です。これは、それぞれのビデオカードごとにドライバを用意することにより、直接ビデオカード上のハードウエアを介して画面描画を行なうことを可能に する、というものです(Hsp2.5添付のhspdx.txtより)。このDirectXを使うことによって、非常に高速な画面描写をすることが可能になりました。

ただ本当は、普通にDirectXを使おうと思うとめちゃディープなWindowsの知識が必要だったりします(私もこのへんはまだ全然わかりません^^;)。ところがHsp2.5に添付されているhspdx.dllを使うことによって、このDirectXを比較的簡単に扱うことができるのです。命令一つでスプライト(ファミコンなんかで使われてた、キャラクタを簡単に制御する奴です)の機能を使えたり、命令一つでそのスプライト同士の衝突判定をすることが出来るのです。

ただ、DirectXを比較的簡単に扱うことができる、とは言ってもやっぱりいろいろ面倒です。また、実はこのhspdx.dllには若干のバグがあって(※注:バグがあるのはHsp2.5に添付されていたバージョンなので、Hsp2.6を使っている場合は問題ありません)、それが原因でデバッグが非常に難しい状態になってしまっています。そこでここではhspdx.dllの基本的な使い方と、Sinagawaさんによってデバッグされたhspdxfix.dll(※注:Hsp2.6には標準で添付されるようになりました)便利機能について解説をします。最終的には「解剖記」で解説しているサンプルスクリプトを、DirectX完全対応に改造するところまでやります。

※文中で打ち消し線が入っている箇所は、Hsp2.6が出たことにより記述が現実に即さなくなった部分です。ややこしいのでそのうち直します。

Divide by 0 Divide by 0
Hspdxfix.dllは進化を続け、現在ではv0.19になっています。Direct3D対応になり、回転・半透明・加算合成などもできるようになってます。
改造記メニューへ戻る 次へ進む