2

サードパーティが作成したプラグインを使用して、あらゆる種類の 3D トリックをレンダリングするアプリを作成しています。

私の主なアプリケーションは、コンテキスト/レンダー オブジェクトとレンダー ターゲット/フレーム バッファー オブジェクトを作成することです。サードパーティのプラグインは、それに派手なものをレンダリングするため、3d レンダリング関連の呼び出しを実行するには、そのコンテキスト / renderobject にアクセスする必要があります。

OpenGL または Direct3D のいずれかを使用してこれを実装することを選択できます。私の決定は、おそらく次の問題に対する私の理解に基づいています。

明らかに、OpenGL / Direct3D の新しいバージョンが登場します。新しく作成されたプラグインが、メイン プログラムがコンパイルされたものよりも新しいバージョンの DX/OGL の恩恵を受けることができれば、それは素晴らしいことです。(アプリケーションを実行しているコンピュータがその新しいバージョンをサポートしている場合)

OpenGL を使用すると (OpenTK を使用すると)、「バージョン X と下位互換性がある最新バージョンを教えてください」のように、上位互換性のあるコンテキストを作成できることがわかりました。したがって、3.2 コンテキストを要求された場合、4.0 が利用可能な場合は 4.0 コンテキストが返されます。

DirectX の場合、そのようなものは何も表示されません。つまり、たとえば DirectX 11 でメイン プログラムを作成すると、サードパーティのプラグインは新しいバージョンが利用可能になったときに使用できなくなりますか?

これは正しいですか?

OpenGL では、サードパーティのプラグイン作成者が OpenGL の新しいバージョン用のプラグインを作成できるようになりますが、DirectX ではそのようなことはできませんか?

4

1 に答える 1

1

DirectX が、アプリケーション内であなたが話している種類の互換性をサポートしたことがあるとしたら、私は驚かれることでしょう。Direct3D API の各バージョンは、基本的に独立した (COM) オブジェクト階層であり、過去または将来にシステムの他の世代が存在する可能性はまったくありません。(もちろん、プラットフォーム レベルでの下位互換性は一般的に優れていますが、まったく異なるものを求めています)。

したがって、OpenGL を使用するか (少なくとも、あなたが言及したサポートは希望を提供するように聞こえます)、実行時に実際のターゲット プラットフォームに何らかの形で「コンパイル」/「適応」するプラグイン用の高レベル API を検討することもできます。これにより、OpenGLDirect3D をサポートできるようになります (ただし、特にシェーダーでは深刻な問題が発生するため、AnySLのようなプロジェクトになります)。

于 2011-01-12T00:06:35.193 に答える