8/23(日)


先週は出かけていたので、日記はお休みしてしまったよ。
って言うか、プログラミング自体をお休みでしたね。


昨日から、DirectX関係のプログラムをやってる。
とりあえず、コンパイル&リンクは出来るようになった。
DirectXはどこもかしこもVC++前提なのでかなり苦労した。
Builder3以降なら標準である程度(DirectX3ぐらいと思う)はコンパイルできるみたいだが、
えむっちとしても、やっぱり最新のもの(現時点の最新版はDirectX6だが、CD-ROMが無いので5を入れた)が使いたいので、
いろいろと設定をいじって出来るようになりました。
(NTはDirectX3までしか対応していないので、以下の作業はやってもムダと言うか・・・)
他の人が困らないよう、ここにやり方を記しておこうと思う。

・DirextXSDKをインストールする。
 (インストール先をC:\dxsdkとして説明します。他のディレクトリにインストールした人は適当に読み替えてください。)

・Builder3を起動し、[プロジェクト]->[オプション]->[ディレクトリ/条件]を選択する。

・インクルードパスにC:\dxsdk\sdk\incを追加する。
 つまり、$(BCB)\include;$(BCB)\include\vclをC:\dxsdk\sdk\inc;$(BCB)\include;$(BCB)\include\vclに書き換える。
 この時、インストールしたDirectXSDKのヘッダを優先的に参照するために、C:\dxsdk\sdk\inc;を前に書く。
 (この設定をデフォルトにしておくと便利かな)

・[プロジェクト]->[プロジェクトに追加]でC:\dxsdk\sdk\lib\BORLAND内の必要なライブラリを追加する。
 (えむっちはメンドクサイので全部追加しています。)

最後のプロジェクトに追加の部分がわからなくてかなり苦労した。
ディレクトリ/条件のライブラリパスにC:\dxsdk\sdk\lib\BORLANDを追加したらうまく行くと思ったんだけど、それじゃだめでした。
何でだろうねぇ・・・
(そのうちこの件はFAQに書き換えないとだめだねぇ・・・)


日本橋のJ&Pテクノランドで「I/O別冊 DirectX実践プログラミング」(\2,500+税)って本を買ってきた。
内容は、DirectX全般。もう一冊「DirectXゲームプログラミング」(だったと思う)って本も売ってたんだけど、
かなり読みにくく思えたのと、高かった(\4,800+税)ので実践・・・にした。

まえに、せきちゃんに「なんかお勧めの本は?」って聞いたときに、「DirectX全般の本を買った方がいいよ。」
って言ってたので、これをチョイス。
なんでも、どうせInputやSoundも必要になるから・・・とか

梅田の旭屋のほうが行きやすくていいのだが、相変わらずDirectX関係は全然置いていない。
テクノランドはDirectX関係の本が結構置いてあった。
DirectX関係はテクノランドがオススメです。


とりあえず、「I/O別冊 DirectX実践プログラミング」の一番最初のサンプルをBuilderに書き換えてみた。

BuilderではWindowとかは最初から作ってくれているのでInitAppの部分はいらない。
で、あと、ウィンドウモードを設定するのにメインウィンドウのハンドルを渡しているみたいなので、
Form->Handleを渡してやった。

ちゃんと動いて、ウィンドウモードは切り替わったが、表示されている状態がCD-ROMに入ってたEXEと少し違う。
Formが画面いっぱいに表示されている。
なんでだろう?
多分、InitAppの中で作っているWindowとBuilderが最初から用意してくれているWindow(Forn)の種類が違うのでは・・・
と、勝手に推測しとりあえずOKとした。

で、サンプルを読むと、アプリケーションのアイドル中に、描画の処理とフリップをしろって書いてある。
アイドル中にやるものなのか?
「I/O別冊 DirectX実践プログラミング」以外のプログラムはどうなのか?
http://market.agr.tottori-u.ac.jp/ken/index.htmlにある、プログラムもアイドル中にやってる。
DirectXではアイドル中にやるものなのか・・・・

言われてみればたしかに、イベントドリブンモデルのプログラミングではそんな気がする。
えむっちは、Builderでやってるせいもあるが、スレッドを切って、プライオリティを全力モードにし、そっちでやるかなって思ったりもした。
でも、それだとイベントの処理が非常に複雑になるのか・・・
それに、アプリケーションがアクティブじゃなくなったときに、大変なことになりそうだな。

あと、V-Syncを待つ見たいな感じのことが書いてないけど、フリップしたらかってにV-Syncを待って切り替えてくれるのかしらん?

このあたり件はせきちゃんに聞いてみよう。


戻る