2016-03-20 13 views
0

私は自分でOpenGLを学びましたが、OpenGLのいくつかの概念が私を混乱させます。VAO、VBO、プログラムの理解

私は、VBOは、サーバー側に無指定のデータが存在することを理解しています.VaOはVBOの説明で、Programはメッシュを画面に表示するためのシェーダーレンダリングパイプラインです。

何が私を混乱させてくれるのですか?わかりましたが、VBOが作成されて塗りつぶされた後、VAOはプログラム属性の仕様として生成されます。 VAOをバインドするたびに特定のプログラムを使用する必要があることを意味しますか?これが間違っていれば私を修正してください。これらのOpenGLの概念間の対話について簡単に紹介しておきます。

おかげ

答えて

2

それはVAOが(とりわけ)format of vertex dataを説明し

我々はVAOをバインドするときに我々が先に特定のプログラムを使用する必要があり、それぞれの時間を意味しています。その形式の一部として、どのデータがどの頂点属性になるかを記述します。これは、属性「場所」を割り当てることによって行います。

頂点シェーダの番号はuser-defined input variablesです。これらの入力にはそれぞれ「場所」が割り当てられます。

レンダリング時に、頂点フォーマットは、一致する場所に基づいて、どのVS入力が書き込まれるかを指定します。したがって、VAOの使用を特定のVSに制限する必要はありません。しかし、互換のプログラムでVAOを使用する必要があります。形式の場所に一致する入力を持つもの。

VAOが属性の位置0,1,4を浮動小数点データで埋めるように指定した場合、そのVAOで使用するVSは互換性がなければなりません。技術的には、実際には位置0,1、または4を使用する必要はありませんが、浮動小数点入力値を使用する必要があります。フォーマットによって提供される未使用の場所は、実質的に無視されます(バッファからほとんど確実に読み取られますが)。

VA0が浮動小数点データを属性0,1,4に入れても、VSが属性1の符号なし整数データを期待する場合、問題があります。

関連する問題