DirectX 6.1 ライブラリの周りに Windows32 フックを DirectX 9.0c に書き込んでいます。アイデアは、DX 6.1 3D デバイスへのすべての呼び出しを Direct 9.0c への呼び出しに置き換え、いくつかのカスタム コードを挿入することです。これにより、パッチを適用している古いゲーム (99 年) でシェーダーやポストエフェクトなどを使用できるようになります。
古い DX 6.1 3D デバイスは、DDraw モジュールを作成することによって作成されました。その後、ゲームはデバイスの上限を列挙しています。私のモジュールでは、DDraw モジュール全体がスキップされ、3D ビューが初期化されます。したがって、DDraw デバイスをまったく持っていないため、必要な Ddraw4 デバイス キャップをゲームに与えることができないという問題があります。
私の質問は、DDraw4 デバイスを初期化せずに DDraw4 デバイス キャップを取得する方法です。おそらく、固定リストを作成してゲームにフィードするだけで十分でしょうが、そのリストに何を入れるべきかわかりません (そうあるべきだと思ったものを与えたところ、ゲームが終了しました - ロガーは、デバイス キャップの直後であることを示しました)チェック済み)