Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ GLSL布尔值的大小是多少_C++_Opengl_Types_Glsl - Fatal编程技术网

C++ GLSL布尔值的大小是多少

C++ GLSL布尔值的大小是多少,c++,opengl,types,glsl,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字节? 这很重要,因为在设置

我想使用的着色器变量有一个
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字节?

这很重要,因为在设置顶点属性指针时,我指定了可以使用的数据类型

GL_BYTE,
GL_UNSIGNED_BYTE,
GL_SHORT,
GL_UNSIGNED_SHORT,
GL_INT,
GL_UNSIGNED_INT,
GL_FLOAT, or
GL_DOUBLE
这是不相关的,因为顶点属性不能是布尔值。根据GLSL 3.30规范:

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

布尔人不在名单上


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

因此所有这些类型(GL4.0中的double除外)最终都扩展到4字节,并且它们仅与客户端相关?@Raven:这些是顶点着色器输入的GLSL类型。在许多情况下,您将它们作为属性值传递给什么取决于您;OpenGL在根据需要转换数据方面有很大的自由度。您不必传递32位整数;如果需要,可以使用8位整数。可以将规范化的整数属性传递给浮点输入。等等。我很确定BoL通常只有1字节的C++(至少它是实现定义的),但我准备证明是相反的。@克里斯多鲁,我搜索过网络,你是对的,甚至1的回报。我不记得是从哪里弄来的。你唯一能说的是它是
sizeof(bool)
。Christian是对的,它是实现定义的,甚至可能取决于编译器设置。