コンピュータソフト
Easy Link Library
botchy
まあまあ(10点)
2006年10月18日
DirectXが6.0の頃に作られたDirect3DとDirectDrawを簡単に使うためのラッパー。ライブラリではなくヘッダファイルによるマクロとして作られており、フレームワーク的なところもある。
当時DirectXによるプログラミングは難解と言われており、私が挑戦してみたときも途中でくじけてしまった。私の場合のくじけた主な原因は、インタフェースがCOMにもとづいており、そもそもCOMが分からない中でDirectXの込み入ったドキュメントを理解することが出来なかったからである。
本当は順序が逆だが、そこで私はこのEasy Link Library通称ELに手を出した。C Magazineか何かの雑誌で特集されていたような覚えがある。動くものがすぐ作れた。細かいことをやろうとすると分からないが、普通に使う分には問題なく使えた。
ただし気に入らないこともあった。イベントループまでマクロ化されており、初期設定の仕方などが出来の悪いフレームワークのようで、細かい制御をやろうとすると使い勝手が悪かった。ラッパー本体がel.hという853KBのヘッダファイルだというところが泣けてくる。しっかり使わせてもらって言うのもなんだが、これは三流の仕事だ。
以上が五年以上前の話だ。いまでもあるのだろうかとネットで探してみたが、もう開発は止まっているようだった。作者のホームページすら見つからなかった。
では現在のバージョンは今でも使えるのだろうか。Microsoft Visual C++ 2005 Express Edition がタダでダウンロードできるので、懐かしくなって昔作ったスクリーンセーバーをビルドしてみた。DirectXのSDKは本当は当時のものを使うのがいいのだが、面倒なので最新のものを使った。結論を言うと、以下の修正をすることで使えた。
・D3DENUMRET_OKが定義されていないので勝手に#defineする。
・vsprintfなどの定義で警告が出まくるので、警告メッセージに従って_CRT_SECURE_NO_DEPRECATEを#defineする(今は安全な代替関数があるらしくそちらが推奨されている)。
・VC++ 2005が厳密なシグニチャを要求するため、el.hの内部で使われているエラーの出たsqrtやatan2の引数にキャスト指定を追加する。
・d3drm.lib(Retained Mode用のライブラリファイル)をDirectX SDK 6.0からコピーしてくる。
・読み込むライブラリファイルのlibc.libがVC++ 2005にないため、libcmt.lib(multi-thread対応版?)に変更する。
ほかにもVC++ 2005の設定としてインクルードやライブラリのパスを設定してやったりする必要がある。Express EditionにはPlatform SDKも入っていないので、別途ダウンロードしてインストールしたほうがいい。
ただしここまでやっても、スクリーンセーバーモードのときマウスの判定がうまくいっていないのか、起動してもすぐ終了してしまう。マウスの判定を除外しているソフトは動いてくれた。
本ラッパーはDirectX 8で取り除かれたRetained Modeという高級モード(?)を使っているため、古いSDKからライブラリファイルを持ってこなければならない。しかもWindows Vistaではこのモードがランタイムですらサポート外になるようなので、近い将来動かなくなってしまう。
というわけで、今になって言うほどのことではないかもしれないが、本ラッパーはDirectX SDK 8(?)が出たときに既に時代遅れになり、Vistaからは作ったアプリすら動かなくなる可能性があるため、もうとっくに寿命が尽きたソフトウェアだという結論になる。
と散々言ってきたが、手軽にDirectXのアプリを作れた本ラッパーの意義は小さくなかった。
当時DirectXによるプログラミングは難解と言われており、私が挑戦してみたときも途中でくじけてしまった。私の場合のくじけた主な原因は、インタフェースがCOMにもとづいており、そもそもCOMが分からない中でDirectXの込み入ったドキュメントを理解することが出来なかったからである。
本当は順序が逆だが、そこで私はこのEasy Link Library通称ELに手を出した。C Magazineか何かの雑誌で特集されていたような覚えがある。動くものがすぐ作れた。細かいことをやろうとすると分からないが、普通に使う分には問題なく使えた。
ただし気に入らないこともあった。イベントループまでマクロ化されており、初期設定の仕方などが出来の悪いフレームワークのようで、細かい制御をやろうとすると使い勝手が悪かった。ラッパー本体がel.hという853KBのヘッダファイルだというところが泣けてくる。しっかり使わせてもらって言うのもなんだが、これは三流の仕事だ。
以上が五年以上前の話だ。いまでもあるのだろうかとネットで探してみたが、もう開発は止まっているようだった。作者のホームページすら見つからなかった。
では現在のバージョンは今でも使えるのだろうか。Microsoft Visual C++ 2005 Express Edition がタダでダウンロードできるので、懐かしくなって昔作ったスクリーンセーバーをビルドしてみた。DirectXのSDKは本当は当時のものを使うのがいいのだが、面倒なので最新のものを使った。結論を言うと、以下の修正をすることで使えた。
・D3DENUMRET_OKが定義されていないので勝手に#defineする。
・vsprintfなどの定義で警告が出まくるので、警告メッセージに従って_CRT_SECURE_NO_DEPRECATEを#defineする(今は安全な代替関数があるらしくそちらが推奨されている)。
・VC++ 2005が厳密なシグニチャを要求するため、el.hの内部で使われているエラーの出たsqrtやatan2の引数にキャスト指定を追加する。
・d3drm.lib(Retained Mode用のライブラリファイル)をDirectX SDK 6.0からコピーしてくる。
・読み込むライブラリファイルのlibc.libがVC++ 2005にないため、libcmt.lib(multi-thread対応版?)に変更する。
ほかにもVC++ 2005の設定としてインクルードやライブラリのパスを設定してやったりする必要がある。Express EditionにはPlatform SDKも入っていないので、別途ダウンロードしてインストールしたほうがいい。
ただしここまでやっても、スクリーンセーバーモードのときマウスの判定がうまくいっていないのか、起動してもすぐ終了してしまう。マウスの判定を除外しているソフトは動いてくれた。
本ラッパーはDirectX 8で取り除かれたRetained Modeという高級モード(?)を使っているため、古いSDKからライブラリファイルを持ってこなければならない。しかもWindows Vistaではこのモードがランタイムですらサポート外になるようなので、近い将来動かなくなってしまう。
というわけで、今になって言うほどのことではないかもしれないが、本ラッパーはDirectX SDK 8(?)が出たときに既に時代遅れになり、Vistaからは作ったアプリすら動かなくなる可能性があるため、もうとっくに寿命が尽きたソフトウェアだという結論になる。
と散々言ってきたが、手軽にDirectXのアプリを作れた本ラッパーの意義は小さくなかった。