GLSL中的(无符号)字节

时间:2017-03-11 22:07:48

标签: opengl types glsl byte unsigned

我的一些顶点属性是单个无符号字节,我需要它在我的GLSL片段着色器中,不是用于任何“真实”计算,而是用于比较它们(如果你愿意,就像枚举一样)。我没有在GLSL中找到任何无符号字节或甚至是字节数据类型,所以有没有办法将它用作输入?如果不是(目前看来是这样)GL_UNSIGNED_BYTE的目的是什么?

1 个答案:

答案 0 :(得分:10)

GLSL没有处理大小类型(嗯,不是小于32位的大小类型)。它只有有符号/无符号整数,浮点数,双精度数,布尔值和它们的向量/矩阵。如果将无符号字节作为整数顶点属性传递给顶点着色器,则它可以将其读取为uint类型,其大小(至少)为32位。传递整数属性需要使用glVertexAttribIPointer/IFormat(注意" I")。

然后,顶点着色器可以将此值作为uint类型传递给片段着色器(但仅使用flat插值限定符)。当然,三角形的每个片段都会得到相同的值。