ということで思ったことです。
どうにも情報がどこかでストップしているのか分かりませんが、ものすごい謎に包まれた機能と化しているな~と思っています。
3DVisionを「プログラム側から」有効にするには?その2
この記事でちょっと話題にしましたが、3DVisionが有効になる条件が相変わらずよく分かりません。
おそらく正しいと思われるのが
- Direct3D9以上(D3D9、D3D10、D3D11)を使っている
- フルスクリーン環境(WindowedがFALSE)である
- Win32GDIによるアクセスを行わないようにしている(ダイアログボックスなど)
の条件の時、3DVisionは自動で有効になるようです。
そして、それに加えて
- 最終描画を3Dモデルで行っている
が付け加わることで3DVisionらしい奥行きがある状態で描画されます。
Direct3D9を使っていない場合はこちらからはどうしようもないです。OpenGLで・・・とかは考えないことにしています。
しかし、特に一部のゲームの場合「フルスクリーン環境である」の条件が満たされないことが多く、3DVisionが応答しません。
なので、強制的に応答させるためにちょっとシステムに一手間を加えます。それが
- DRS(この場合はNVIDIAのドライバとアプリの設定を示したデータ。空気抵抗…とは違います)に対象のアプリの情報を追加する
です。この情報が存在するとき、ウィンドウモードであったりしても3DVisionが応答するようになります。
これを操作するツールが[Geforce_SLI_Profile_Tool.exe]というものです。β版らしいですが、DRSのデータベースをテキストファイル化したり、データベースに再格納したり出来ます。
本来はSLIなどNVIDIAのシステムでの特有の設定を各種3Dゲームに対して行うときの情報管理のツールです。
ちなみに、遊びで強制有効DLLを作ってみたが・・・
d3d9.dllのスタブライブラリとして作ってみました。
役割としては
- プログラムの開始時にNvAPIの初期化およびDRSの登録作業を行う
- 3DVisionをDirect3D9を使って有効にするようにライブラリを初期化する
を行います。うまくいけば3DVisionが応答する条件でないゲームでも3DVisionとして動かすことが出来るはず・・・。
ただ、いくつかで試しましたが、ほぼ全滅してしまったので公開する気にはなれません。
(全滅、というのは試したプログラムがDirect3D9を使っていても3D描画として描画していなかった、と言うこと)