私はグラフィックカードのバージョン、OpenGLのバージョンとAPIヘッダーがどのように連携しているかを理解しようとしています。私はOpenGLフォーラムや他の場所でOpenGL 2.0/3.0/3.1のバカラを読んだことがありますが、これが開発者(OpenGL初心者)としてどのように機能するかはまだ分かりません。 (私はカードの1つを購入しているので、この質問ではnVidiaを例として使用していますが、明らかに私が開発したソフトウェアにはベンダーに依存したくありません)。OpenGLのバージョンとgpus - どのような互換性がありますか?
まず、OpenGLバージョンをサポートする必要があるGPUがあります。しかし、例えば。 nVidiaには、古いビデオカード用のドライバがあり、OpenGL 3をサポートしています。これは、これらのドライバがハードウェアにない新しい機能をエミュレートするためにソフトウェアで特定の機能を実装していることを意味しますか?
次に、APIヘッダーがあります。 OpenGL 3用のアプリケーションを作成することにした場合、このバージョンをサポートするヘッダーを持つプラットフォームSDKの更新版をリリースするまで待つ必要がありますか?コード内のプリプロセッサ定義でどのAPIを使用するかを選択するか、最新のプラットフォームSDKに更新するだけで最新のバージョンにアップグレードしますか(この最後のオプションは想像できませんが、わかりません)。 ..)。
下位互換性はどうですか? OpenGL 1.2を対象としたアプリケーションを作成した場合、OpenGL 3をサポートするカードのドライバをインストールしたユーザーは、それを実行できますか?または、アプリケーションのカードの機能/サポートされているバージョンをテストする必要がありますか? http://developer.nvidia.com/object/opengl_3_driver.htmlを読むと、少なくとも1.2に対して書かれたnVidiaカードアプリケーションは引き続き動作することが確認されているようですが、これは他のベンダーが1.2 APIをサポートするのを止めるかもしれないことを意味します。基本的には、今後も1.2をサポートしていないため、ソフトウェアが最近のカードで動作しない将来の位置に(潜在的に)私を置きます。しかし、私がOpenGL 3または2を今日開発した場合、gpuの唯一のサポートである1.2をシャットアウトすることがあります。
私はOpenGLのファンシーな機能は必要ありません。シェーディングをほとんど使用していないので、固定パイプラインがうまく動作します(私のアプリケーションはCAD風です)。新しいアプリケーションをベースにしたベストバージョンは、何年にもわたって増分アップデートされて長寿命のアプリケーションになると期待していますか?
この文脈に関連する他の問題を忘れている可能性があります。洞察力は非常に高く評価されています。
特定の状況で適切なAPIの使い方を教えて欲しいと思うので、これを追加します: '即時モード=コミットされたジオメトリの量とAPI呼び出しの数との間の線形相関(非ゼロオーバヘッド)。 – Gigi