GLSL布尔值的大小是多少

时间:2012-02-23 19:23:13

标签: c++ opengl types glsl

我想使用的着色器变量有bool类型,但我找不到它的大小。这很重要,因为在设置顶点属性指针时,我指定了可以

的数据类型
GL_BYTE,
GL_UNSIGNED_BYTE,
GL_SHORT,
GL_UNSIGNED_SHORT,
GL_INT,
GL_UNSIGNED_INT,
GL_FLOAT, or
GL_DOUBLE

在c ++中,bool通常应该与4字节int具有相同的大小,但我可以假设GLSL相同,还是只有1个字节?

1 个答案:

答案 0 :(得分:12)

  

这很重要,因为在设置顶点属性指针时,我指定了可以

的数据类型

这是无关紧要的,因为顶点属性不能是布尔值。从GLSL 3.30规范:

  

顶点着色器输入只能是浮点,浮点矢量,矩阵,有符号和无符号整数以及整数矢量。顶点着色器输入也可以形成这些类型的数组,但不能形成结构。

布尔人不在该名单上。

但是,如果您想知道GLSL bool的大小是uniform blocks,它的大小与uint相同:32位。