過去の独りごち/独りごとはこちら
過去のJavaアプレットは
こちら

 

8/31 夏の終わりに

 こっそりUL

 …

 今まで避けてきたDelphi用DirectGraphics8.0aヘッダとそのサンプルです(^^;)

 DirectX9をじりじり待つつもりだったんですが、巷の書店を見渡すと見事なまでにDirectX7の書籍なんて無い。 これじゃいかんよなぁ、という事で、急作りですが、昨日から2日だけ使って一応程度に作ってみました。

 Party's Breakerに触発されてDirectX8がどうしてもいじりたくなったからではありません(ぉ

 ヘッダいじりを本当に久しぶりにやって気づいたんですが、Microsoftの作ったDirect3D用ヘッダと、QuadrupleDのメインモジュールである、dddd.pasは同じサイズだけあったりします…つまり、使い易くするためのラッパと、使いづらい実体が同じサイズという(^^;)

 いや、MFCとWin32APIはもっと凄いですけど。でも、使いづらいラッパ…

 けれど、DirectX8、ホントに簡単ですね。もうdddd.pasとか要らないんじゃないかと思うくらい。D3DXがあればこそ、というのは迷信です。D3DXが仮に使えなくても、せいぜいBMPをサーフェスに流し込むルーチンだけ作っておけば、2Dプログラミングがバリバリ出来ます。ポリゴンモデルを読み込む仕組みを作っておけば、3Dプログラミングがバリバリ出来るでしょう。実はDirectDrawが無くなったというのも簡単さに大きく寄与しています。なんといっても、あの気色悪いQueryInterfaceが要らないし。

 dddd.pasを使って一番ありがたいと作者自身が思うことは、列挙用コールバックを書かなくて良いという点に尽きます。しかし、列挙用コールバックが無くなっちゃったので、dddd.pas導入の旨みは半減したといって良いでしょう。むしろ、変な制約が付く分だけ邪魔かもしれません。

 嬉しいやら悲しいやら。

 ところで、QueryInterfaceを気色悪いと書いたように、僕はCOMについて良く理解して無かったりします。とりあえずOLE2ユニットを使って、Interfaceとかを使わずに翻訳したものは経験的にうまく動かせるようになったのですが、下位互換性のために用意されていますと嫌みったらしく断って、更にDelphi2とかいう名前のディレクトリに隔離されている、何時なくなるかもしれないOLE2を使うのはいい加減気持ち悪くなってきたので、Delphi3から言語仕様として導入されたInterface、そしてActiveXユニットを利用してヘッダの翻訳を進めました。けど…このInterfaceの挙動というのがどうにも良く分からない。特に、参照カウンタを勝手に操作しているらいしんですよね。OLE2使っていた頃は、参照カウンタの増減はCOMサーバ側でのみ行っていたようなんですが、Delphiの吐いたコードが悪さをしているようで…Javaの真似して勝手にメモリの解放とかをやってくれるための工夫などがあるのかもしれませんが、そんなの、今の僕には気持ち悪いストーカー行為以外の何物でもありません。仕方ないのでDelphiの紙マニュアル読み読み… 紙マニュアル読むのっていつぶりだろう。

 ふと思ったのですが、Delphi1の頃に有った名著、Delphiの奇跡のような、ObjectPascalの言語そのものと真摯に向き合って、なおかつ分かり易い書籍って無いものか… 最近のDelphi本はどれもコンポーネントとTips集めてそれだけっぽくていけません。コンポーネントさえ使えば具体的な実装方法とか習得しなくても、なんとなく凄いことが出来ちゃうのですが、言語仕様というものをきちんと分かっていないとどうしようもない状況というのは往々にしてあります。コンポーネント使えれば良いや、というのではなんちゃってプログラマの域を出ることは許されますまい。

 あんまり雑誌への掲載歴とかについてこのページでは触れないものですが、今回は特別に。

 Delphi 魔法のTipsに、QuadrupleDについての解説が載りました。DirectXの章が一章まるまる割いてあって、なんだか幸せです。ライターの方はご苦労様でした。 はい、僕は何も書いてないので、原稿料などはもらえませんが(当然、魔法のTipsを1部分けてもらいました。8500円もする立派な本なので、嬉しい嬉しい。

 ただ、未だDirectX7ベースなQuadrupleDですので、最新の書籍なのにDirectX的には古臭い物になっちゃうのは僕のせいですかm(__

 

Taku Hayase(SANDMAN)

戻る