2016-09-20 6 views
2

私はglVertexAttribPointerを理解しようとしており、GLSLに相当するものよりも多くの型を受け入れることに気付きました。私が今までに知っていることすべてを書き留めるために、私はこの図をすべてのタイプに一致させました(問題のないパックされたものを除き、GL_FIXED)。OpenGLデータ型のこの図は正しいですか?

青いノードはタイプを表しますGLSLで、黄色ノードはglVertexAttribPointerに渡さシンボリック定数を表している。

赤のノードはタイプ間の変換のいくつかの種類を表す。

それぞれイエローノードのみ直接一つの青のノードに接続され、その主と思われるものGLSLで表現することができますが、一部は他の形式に変換することができます。

gl type diagram

私の質問は次のとおりです。この図の関係は正しいですか。GL_FIXEDはどのように適合していますか?

答えて

2

あなたはglVertexAttribPointer呼び出しからVS intuintフィード、またはdouble入力変数(又はこれらのベクター)することができません。この関数のみfloatの種類があります。この関数で正規化されていない整数を使用すると、標準キャスト演算(255が255.0fになる)のようにfloatにキャストされます。 GL_FIXEDは32ビット整数が16.16の固定小数点値として扱われる別の浮動小数点表現です。もちろん、これはVSに供給されるときに浮動小数点数に変換されます。

VS整数を供給するには、glVertexAttrib Iポインタを使用する必要があります。 doubleを入力するには、glVertexAttrib Lポインタを使用する必要があります。

boolタイプは、あらゆる種類の入力変数にすることはできません。

関連する問題