neptune_explorer_0x9 (v0.000000001(β1)) | 2009-11-02 23:23 |
Neptune-UI (0.01.40.20) | 2008-07-12 20:15 |
思ってたよりもそんなに経ってなかったな。(何
ミューです。
2ヶ月程書いてない間に、二段階程色々とありました。
まず、一段階目として、前回の日誌の最後で「あとはパーティクルとか、影とかそこらへんかなぁ」みたいな事言っていましたが、
全然それだけじゃ済まなかった件。
よりちゃんとした鏡面効果とかを得るためには、ピクセルシェーダーの力をお借りせねばならなかったりで、
最初はピクセルシェーダー1.0のアセンブラごりごり、そん次HLSL・・・を使おうと思ったら
これがDirectX 9以降でないと使えないとかで、DirectX 9に頑張って対応させたり(DirectX 8と9じゃだいぶ色々と違くて大変だったのですよぉー・・・)、
で、対応させたは良いけどHLSL全然ワカラン・・・とかそんな感じでした。(何
結局、そっちの方はとりあえず放置してて、(何
今、第二段階として、August Frameworkの再設計をやっています。
再設計を始めた一つ目の理由は、まず、DirectX 9がSDKのバージョン(2004とか、2006 Febとか2006 Aprilとか)によってコロコロと仕様が変わる事。
しかも、IDirect3DDevice8 と IDirect3DDevice9、みたいに、クラス名を変えてくれればまだ良いものの、
同じクラス名でありながらもガラっと仕様(中身の実装だけではなく、メソッドインターフェースまで・・・)を変えやがる事。
お陰で「DirectX 9のSDK」って言う点では同じである筈なのに、2004とか2006とか2008とかでコンパイル出来たり、出来なかったり・・・
となってしまうのですよねぇ・・・。
なのでこれに対する対策として、いっそDirectXに依存する部分を秘匿してしまおう、と言った発端で再設計を始めています。
具体的にはつまり、DirectXのヘッダを使用者が読まなくても良い様に秘匿してしまおう、と言う事。
使用者はDirectX SDKをインストールしなくて良くなるので、一石二鳥、と言うのもあります。
またこれには二つ目の理由もあって、将来的にはMinGWでもコンパイル可能なようにしよう、と言う目論見もあったりします。
MinGWにも一応DirectXは含まれている・・・ようなのですが、ID3DX系クラスが含まれてなさそうなのと、
DirectX 9のみの対応みたいなので、いざDirectX 8に戻そうとしたときに戻せない・・・と言う理由があっての事です。
で、そういった理由で始めていたのですが、暫くしてもう一つ理由が浮上、それは「DirectX 8 SDKがついに入手不可能になったっぽい」というものでした。
一応今、DirectX 9で進めてはいるのですが、いつDirectX 8に戻すか分かりませんし、つーか入手可能なDirectX 9 SDK、一番古い奴でもVC++ 6.0でコンパイル出来ないっぽいし、
と言う事もあって、今急いで再設計を行っている所です。