0

DirectX 6.1 用の Windows フックを作成しています。EMBM (Environment Mapped Bump Mapping) の呼び出しを傍受し、データを独自のバンプ シェーダーに渡したいので、EMBM に依存するアプリケーションは正しく動作します。唯一の問題は、DX 6.1 ではシェーダーがまったく許可されないことです。Direct3DDevice3 を新しい SDK のクラスに単純に置き換えることはできません。これは、メソッドが異なる引数のセットを使用し、フックされた dll を使用するアプリケーションがクラッシュするためです。回避方法がわかりません。私は DirectX があまり得意ではありません (最新のハードウェアで動作する DX 6.1 でバンプを実装するためのより効果的な方法があるかもしれません)。シェーダーを使用できるようにする D3Device のインターフェイスを照会することは可能でしょうか?

私を正しい方向に向けることができるものは何でも大歓迎です。

4

1 に答える 1

1

各 Direct 3D デバイスは IUnknown から直接派生するため、v6 デバイスから v9 デバイスへの QI はできません。

必要なこと (ドライバー レベル以上) を実行できる唯一の方法は、v6 デバイス全体を実装し、すべての呼び出しを v9 の同等のものに変換することです。もちろん、ゲームがv7またはv8を介してembmを実装している場合、問題が発生します...

于 2009-11-02T07:51:09.280 に答える