2011-01-11 6 views
2

私は、あらゆる種類の3Dトリッキーをレンダリングするために、サードパーティが作成したプラグインを使用するアプリケーションを作成しています。3D&サードパーティのプラグインを使用しているアプリケーション - 前方互換のOpenGLまたはDirect3D?

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

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

OpenGL/Direct3Dの新しいバージョンがリリースされています。新しく作成されたプラグインが新しいバージョンのDX /メインプログラムよりOGLをコンパイルしました。 (アプリケーションを実行しているコンピュータが新しいバージョンことをサポートしている場合)

(OpenTKを使用して)OpenGLを使用して、私はのように「最もアップへ - タのデータ私を与える、それは前方互換性コンテキストを作成することが可能です理解バージョンXと下位互換性のあるバージョン "。 したがって、3.2のコンテキストを求められたら、4.0が利用可能であれば4.0のコンテキストを返します。

DirectXの場合、私のようなものは表示されません。つまり、DirectX 11でメインプログラムを作成すると、サードパーティのプラグインは新しいバージョンを使用できなくなります。

これは正しいですか?

OpenGLは、OpenGLの新しいバージョンのプラグインを作成できるようになりますが、DirectXではこれを行うことはできません。

答えて

1

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

OpenGLを使用すると(少なくとも、希望が出るような音が出ます)、実行時に実際のターゲットプラットフォームに何らかの形で "コンパイル"/"適応"するプラグイン用のより高いレベルのAPIを検討することさえあります。 OpenGL Direct3Dをサポートすることができます(特にシェーダは明らかに深刻な問題を抱えているので、AnySLのようなプロジェクト)。

関連する問題