ActiveBasic独自のDirectXライブラリの開発、本格的に始めました。ライブラリ名が決まっていないので、コードネームをABDXとでもしておきましょう(なんかいいタイトルないかな)。

さて、その内容なのですが、別途ABDXのライブラリを読み込んで…というものではなく、統合開発環境埋め込み型(RADツールのような感じ)にしようと考えています。RADツールのような感じといっても、視覚的な操作は一切なく、コーディングメインです…。開発は下のような手順になります。

  1. メニューの「新規作成」をクリックし、プロジェクトを選択する
  2. プロジェクト名を入力し、アプリタイプを「DirectX対応アプリ」にする
  3. コーディングを始める

3番のコーディングを始める時点で、ABDXを使えるようになっています。要するに、「DirectX対応アプリ」のプロジェクトを生成した時点で自動的にABDX自身のソースコードがプロジェクトの一部として生成されるわけです。これは、ウィンドウアプリのプロジェクトを作成した際に、ノーマルウィンドウ(厳密にはCallback.wbp、MakeWindow.wbp、MainWnd.sbp)が自動生成されてすぐにでもウィンドウプログラミングを行えるようになるのと同じようなものだと思ってもらってよいです。

ABDXの内容

私を含め、初心者プログラマーはCOMプログラミングが苦手です。故に、「DirectXはCOMインターフェイスをベースに…」と話が展開していく時点でイヤになってしまうことが多いです。そこで、ABDXは、COMインターフェイスを意識しないライブラリでなければなりません。目指すところはCOMインターフェイスを隠蔽し、尚かつDirectXをフルコントロールできるライブラリというところでしょうか。しかも、ABDXが提供する機能(関数)はユーザーが理解しやすいものでなければならない点も重要です。

実際にDirectGraphicsを扱ってみると、まずはIDirect3D9インターフェイスの生成を行い、それを元にIDirect3DDevice9インターフェイスを生成します。後者のIDirect3DDevice9インターフェイスを用いて、やっとDirectGraphicsが提供する描画機能を扱えることになりますが、それなら最初からIDirect3DDevice9インターフェイスを生成してくれればいいじゃんという疑問がでてきます。色々な要因があってのことでしょう。とにかく、IDirect3D9の次にIDirect3DDevice9だって決まっているのです。このように一度理解してしまえばなんのことはないのですが、ABを初めてダウンロードして腕試しにABDXで「Hello World!」でもやってみるかという状況ではかなり酷な内容でもあります。

この、COMとしてのDirectXとABユーザーとの間のワンクッションがABDXになります。ABDXが生成された時点で、初期化及び終了処理は自動的に定義されるので、すぐにでも描画部分からコーディングすることができます。しかも、そのコーディングは、命令単位で行われるため、N88BASICから移行してきたユーザー、初心者ユーザーにも理解しやすい内容であるといえます。因みに、DirectXで「Hello World!」をやりたいときは、ABDXを利用すれば非常に簡単です。

  1. プロジェクトを新規作成(DirectX対応アプリにチェック)
  2. “プロジェクト名.abp”のコーディング画面を開く
  3. RenderProc関数(描画を担当するコールバック関数)の1行目にdx_DrawText(x,y,”Hello World!”,D3DCOLOR_ARGB(255,255,255))と打つ

では、晩酌中ではありますが、引き続きがんばります。