C++ OpenGL布尔制服?
我正在尝试向OpenGL glsl着色器发送布尔值 目前我在着色器中有以下内容:C++ OpenGL布尔制服?,c++,opengl,boolean,shader,C++,Opengl,Boolean,Shader,我正在尝试向OpenGL glsl着色器发送布尔值 目前我在着色器中有以下内容: uniform bool foo; 我用这个来设置它: glUniform1i(glGetUniformLocation(shader, "foo"), true); 似乎没有一个glUniform1b,所以我将它设置为一个整数。这似乎很有效 这种方法有什么问题吗?它是可移植的,还是会在其他图形卡/驱动程序上损坏?目前我正在使用OpenGL 4.3 §4.1基本类型 OpenGL着色语言支持以下基本数据类型,分
uniform bool foo;
我用这个来设置它:
glUniform1i(glGetUniformLocation(shader, "foo"), true);
似乎没有一个glUniform1b
,所以我将它设置为一个整数。这似乎很有效
这种方法有什么问题吗?它是可移植的,还是会在其他图形卡/驱动程序上损坏?目前我正在使用OpenGL 4.3
§4.1基本类型
OpenGL着色语言支持以下基本数据类型,分组如下:
一种条件类型,取值为真或假bool
双分量布尔向量bvec2
三分量布尔向量bvec3
四分量布尔向量bvec4
- 当内部状态类型为布尔值时,零整数值或浮点值将转换为
,非零值将转换为FALSE
TRUE
据我所知,它与4字节对齐有关(布尔值为1字节,因此无论哪种方式,最后都会添加3个额外的填充字节),因此使用布尔值是没有效率的,甚至可能在中被弃用OpenGL@Amadeusz它当然没有被弃用。谢谢。4.1意味着我可以在glsl着色器中使用bool。4.1.2并不能真正帮助我。还没有回答的是,我是否可以使用glUniform1i设置布尔统一…@JanRüegg还为此添加了一个引号