のサブクラスを作成して使用することは可能IDirect3DDevice9
ですか?私のコードがそうすることは非常に便利ですが、デバイスポインタがからのoutパラメータとして与えられていることがわかり、IDirect3D9::CreateDevice()
代わりにサブクラスのインスタンスを作成するように指示することはできません。
IDirect3DDevice9
機能が拡張されたデバイスのサブクラスを使用するときに、を使用する他のコードを変更する必要がないように、これを実行できるようにしたいと思います。具体的には、サブクラスはIDirect3DDevice9::Draw()
、実際の描画が行われる前に、デバイスのレンダリング状態設定を読み取り、のバリアントが呼び出されるたびに一致するようにシェーダー変数を更新する必要があります。繰り返しになりますが、d3dデバイスを使用する他のコードを変更したくないのは、通常のデバイスまたは拡張デバイスのいずれかを使用できるようにするためです。
基本クラスのインスタンスを使用してサブクラスのインスタンスを作成することは可能ですか?その場合、Direct3Dがサブクラスインスタンスを使用するように設定されていない、またはメモリ内の複数のデバイスインスタンスが原因で、gfxカードリソースを共有する必要があるなどの問題が発生しますか?または、サブクラスを使用せずにこれを回避する別の方法を考える必要がありますか?