2017-03-11 11 views
4

私の頂点属性のいくつかは、単一の符号なしバイトです.GLSLフラグメントシェーダでは、実際の計算ではなく、比較するために必要です。私はGLSLで符号なしバイトまたはバイトデータ型を見つけられなかったので、入力として使用する方法はありますか?そうでない場合(現時点ではそう思われる)、GL_UNSIGNED_BYTEの目的は何ですか?(符号なし)バイト

答えて

5

GLSLはサイズの大きい型を扱っていません。浮動小数点、浮動小数点数、倍精度、ブール値、およびそれらのベクトル/行列のみが符号付き/符号なしの整数です。整数の頂点属性として符号なしのバイトを頂点シェーダに渡すと、少なくとも32ビットのサイズのuint型として読み取ることができます。積分属性を渡すには、glVertexAttribIPointer/IFormatを使用する必要があります(「I」に注意してください)。

頂点シェーダは、この値をuintタイプ(但し、補間修飾子flatのみ)としてフラグメントシェーダに渡すことができます。もちろん、三角形のすべてのフラグメントは同じ値になります。

関連する問題