opengl 3とopengl 4の違い


10

ゲームプログラミングを始めたばかりで、openglの学習を開始したいと思っています。私は非常に優れたチュートリアルを最初から見つけてopengl 3を使い始めましたが、openGL 3とopenGl 4の間に大きな違いがあるかどうか疑問に思っています。 openGL 3からopenGL 4に移動できますか?

回答:


12

まず、OpenGLのバージョンがどのように機能するかの説明にリンクすることから始めます。つまり、OpenGLは(一般に)下位互換性があるため、すべてのGL 3コードはGL 4実装で問題なく機能します。

OpenGLバージョンの4.xシリーズは、「Direct3D 11」クラスのハードウェアと呼ばれるものを表しています。そのハードウェアの機能を公開します。D3D10ハードウェアは、OpenGLの3.xバージョンで表されます。したがって、「openGL 4への移行」とは、下位のハードウェアを放棄すること、または複数のレンダリングパスを持つことを意味します。

3.3と4.2の間の実際の機能変更の詳細な内訳は、4.2仕様に記載されています。多くの機能(separate_shader_objects、shading_language_420pack、texture_storage)は4.xハードウェアに限定されないことに注意してください。これらはAPIの変更であり、拡張機能を介して3.xハードウェアでアクセスできます。

最も重要な質問はこれです:GL 4.xでは、3.xハードウェアでは不可能なことを何ができるのですか?

テッセレーションはおそらく最もよく知られている機能です。また、おそらく最も一般的に有用ではありません。それが役に立たないと言っているのではありません。テッセレーションを適切に使用すると、モデルの詳細を向上させることができます。しかし、少なくとも私にとっては、それはGL 4が実際に達成した最良のものではありません。

シェーダーサブルーチンは興味深いアイデアです。これにより、基本的に、シェーダーの異なるフラグメントを動的につなぎ合わせることができます。プログラム内の特定のバインドポイントに関数を関連付けることができます。仕様に従うのは少し難しいですが、それは良い機能です。

画像の読み込み/保存はおそらくGL 4機能の中で最も見過ごされているが、最も強力なビットだと思います。これにより、OITが達成するのとほぼ同じパフォーマンスで、順序に依存しない透過性を実装できます。画像のロード/ストアには他にも多くの用途がありますが、それを理解するには賢い人が必要になります。

GL 4にはいくつかのオッズとエンドがあります。倍精度サポートと間接レンダリングのようなものです。これらはGPGPUスタイルのものなので、ゲームではあまり役に立ちません。

ただし、一般に、GL 4は、GL 3から機能Xを実装する方法を根本的に変更するものではありません。


間接レンダリングは「GPGPUスタイルのもの」であると言うのは完全に間違っています。これは、CPUから多くの呼び出しを行うレンダラーにとって、パフォーマンスを大幅に向上させるものであり、ゲームの優れた機能です。
CoffeeandCode 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.