web-dev-qa-db-ja.com

OpenGL 4.x学習リソース

OpenGLの学習についていくつか質問があることは知っています。これが私が知っていることです:

  • 3Dの数学
  • 3D理論

これが私が知りたいことです:-OpenGL 4.0 コアプロファイル(またはそれ以降)-Shader Language 400(またはそれ以降)-上記のすべての部分(それが機能しない場合)ベンダー間では、それでも私は気になりません)

これは私が知りたくないものです-固定関数パイプライン(これを使用することはありません!)-古いOpenGL-互換性プロファイル

チュートリアル、一連の記事、本など、情報の大部分を好みます。

PS opengl 3.xコアプロファイルのリソースを知っている場合は、それらも投稿してください。

40
przemo_li

私は心から否定的な答えを嫌いますが、私はこの質問に答えなければならないのではないかと心配しています。

最終的に、OpenGLバージョン4.0以降の機能uniqueを使用する初心者向け資料を求めています。さて、4.xのユニークな機能のいくつかを見てみましょう。

おそらく最大の特徴はテッセレーションです。どういう意味ですか?これは、より多くのプリミティブを生成するためにプリミティブをテッセレーションすることを意味します。それが何を意味するかを理解する前に、プリミティブがどのようにレンダリングされるかを最初に理解する必要があります。 4.xより前のレベルの機能を使用します。

しかし、レンダリングの仕組みをしっかりと理解していても、まだ問題があります。テッセレーションシェーダーの意味のある説明を行うには、まずテッセレーションアルゴリズムについて十分に理解している必要があります。そして、それは単純な主題ではありません。テッセレーションシェーダーの使用方法をユーザーに教えるチュートリアルでは、チュートリアルは最初にスプライン曲線とパッチまたはサブディビジョンサーフェスを導入する必要があります。これらはどちらも長いトピックであり、多数のホワイトペーパーが取り上げられています。アルゴリズムを詳述した後でないと、ユーザーはこれらのアルゴリズムがテッセレーションシェーダーにどのように実装されているかを確認できます。

言い換えれば、テッセレーションシェーダーは初心者向けのマテリアルではありません。私はそれらを中級レベルの資料として認定することすらしません。

4.xレベルのハードウェアのもう1つの大きな機能は、4.2のコアである shader image load store (およびそのコンパニオン atomic counters )です。これは、順序に依存しない透明性を含む、いくつかの非常に気の利いたことを可能にします。ただし、ユーザーが周囲のすべての癖を理解し始めるためには、ユーザーは最新のシェーダーハードウェアの詳細な仕組みに精通している必要があります。したがって、どのチュートリアルでも最初に、最新のVLIW/SIMDベースのハードウェアがどのように機能するか、およびそのようなハードウェアでシェーダーがどのように使用されるかを説明する必要があります。繰り返しますが、これは重要なことではありません。

4.xハードウェアのもう1つの大きな機能は、間接レンダリングです。つまり、パラメータをバッファオブジェクト自体のglDraw呼び出しに配置します。問題は、この機能を使用する理由が本当に1つしかないということです。GPUが、後でレンダリングするために1つ以上のバッファーにデータを直接生成したためです。そして、それを行うには通常、何らかの形のGPGPU操作が必要ですが、これは初心者レベルのトピックではありません。

これらの機能はすべて有用であり、実際の目的があります。ただし、初心者はこれらを使用しないでください。場合によっては、中級レベルのプログラマでさえ触れないでください。

完全に公平にするために、いくつかの4.2の機能がハードウェアベースではなく(そのため、3.3以下のバージョンで実装されることが多い)、非常に便利です。たとえば、個別のプログラムオブジェクト。これらの機能は、3.3ベースのチュートリアルを書いているときにヒットしました。これらの機能を見直して、この機能を組み込むことを検討しました。私がそうしなかった唯一の理由は、実装(ドライバー)がこの機能に関してまだ完全に安定していないためです。しかし、それは有用です。

私が遭遇している主なポイントはこれです:あなたがグラフィックス知識の段階にいて、GL 4.xハードウェアのユニークな機能を利用する準備ができている場合は、また、グラフィックスハードウェアの機能を実装するための明示的な段階的な説明資料を必要としない十分なグラフィックスの経験があります。GL_ARB_tessellation_shader拡張仕様を読み、それらにあなたが何をさせるかを理解できる人は、そういう人です。する必要があります。

そうは言っても、OpenGLコア3.0以上を教える資料に興味がある場合は、 OpenGL Wiki にそのようなリンクのニースコレクションがあります。完全な開示のために、そのうちの1つを書きました。

31
Nicol Bolas

OpenGL SuperBibleの第5版 が最近リリースされました。このエディションは、OpenGL 4.0と同時にリリースされたOpenGL 3.3を反映しています。本はコアプロファイルのみをカバーしており、OpenGLに関する事前の知識はありません。

それはとにかく私が本の説明から得たものです。私は第4版を持っています。これはOpenGL 2.0の優れたリソースであるため、最新版の OpenGLシェーディング言語 ブックと一緒に新しいエディションを探していると思います。

Durian Software には、最新のOpenGLをカバーする一連のチュートリアルが進行中です。それらはOpenGL 2.0を対象としていますが、それ以降のバージョンで非推奨の機能を使用することは避けてください。

11
Firas Assaad

OpenGL 3.0と4.1の違いはほとんどありません。 3.0以降のコアプロファイルを使用すると、固定機能パイプラインを使用できなくなります。あなたが本当に求めているのは、固定関数パイプラインを使用しないOpenGLチュートリアルです。

Jason L. McKessonの優れたチュートリアル「Learning Modern 3D Graphics Programming」は、非常に初期の基本にシェーダーを使用して開始し、固定関数パイプラインには触れません。

http://www.arcsynthesis.org/gltut/index.html

私はそれを強くお勧めします。

10
ccxvii

最近、このオンラインブックに遭遇しました: OpenGLBook.com

まだ読んでいませんが、オンラインブック形式の無料のOpenGL 4.0プログラミングリソースであると説明されています。

5
blaztinn

本当にすばらしい質問です。実際のところ、ドキュメントはまばらです。

ここに良い紹介があります: http://sites.google.com/site/opengltutorialsbyaks/

Groovounetのogl4サンプルパックもお勧めです: http://www.g-truc.net/post-0310.html

でも、それでおしまいですね。詳細については、openglディスカッションボードに潜んでください...

編集:数秒前に見つかりました。 SIGGRAPHから直接 http://nvidia.fullviewmedia.com/siggraph2010/02-dev-barthold-lichtenbelt-mark-kilgard.html

4
Calvin1602

http://www.opengl.org/sdk/docs/man4/

OpenGL 4.1のmanページがあり、開発時に役立つことが証明されています。

3

私はあなたが持っている最も良い希望の一つは ジョーのブログ だと思います。最新のOpenGLに関する優れた紹介記事がいくつかあり、さらに(おそらく)準備中です。

2
2
Sergej Kern

Swiftlessは、新しいコンテキストを含むようにチュートリアルを更新しています。迅速でシンプルなVAO、VBO、およびレンダリングに関してよりわかりやすい優れた開始チュートリアルが次の場所にあります swiftless.com

2
Garet Claborn

OpenGL 4の主要なポイントはテッセレーションなので、OpenGL 4テッセレーションのスタンドアロンチュートリアルから始めることをお勧めします。つまり、 http://prideout.net/blog/?p=48

マニュアルとチュートリアルの後、良いフォローアップとして、「新しい」OpenGL 3/4に基づいたオープンソースエンジンを見てみましょう。開発者の一人として、私は Linderdaum Engine を指摘します。

1
Sergey K.
1
wartalker