OpenGL布尔统一
OpenGL bool uniform?
我正在尝试向OpenGL glsl着色器发送布尔值。
目前我在着色器中有这个:
uniform bool foo;
我用这个来设置它:
glUniform1i(glGetUniformLocation(shader, "foo"), true);
似乎没有glUniform1b
,所以我将其设置为整数。这似乎很有效。
这种方法有问题吗?它是便携式的,还是可能在其他显卡/驱动程序上坏掉我现在正在使用OpenGL 4.3。
§4.1基本类型OpenGL着色语言支持以下基本数据类型,分组如下:
bool
条件类型,取值为true或false- 双分量布尔向量
bvec2
bvec3
三分量布尔向量bvec4
四分量布尔向量
§4.1.2布尔为了使代码的条件执行更易于表达,支持布尔类型。不期望硬件直接支持这种类型的变量。(…)
关于设置:
§2.2.1(…)当使用与该状态的实际类型不同的参数类型指定状态值时,数据转换为执行如下:
- 当内部状态的类型为布尔型时,零整数值或浮点值将转换为
FALSE
,非零值将转换为TRUE
glsl bool
的大小是32位,与int
的大小相同,所以可以这样设置。
不,它不会破坏OpenGL的其他图形卡/驱动程序。
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 一个关于在C++中重载布尔运算符的问题
- 提升精神:解析布尔表达式并简化为规范范式
- 了解 GLM- openGL 中的相机转换
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- OpenGL大的3D纹理(>2GB)非常慢
- OpenGl glm rotate
- 线程之间的布尔停止信号
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- OpenGL在启用深度测试时不会丢弃我的碎片
- OpenGL相机和相机空间转型的困惑
- 布尔比较运算符是如何在C++中工作的
- 变量定义到C++布尔值转换
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 隐式常量/非常量运算符布尔
- OpenGL将纹理四边形渲染为(0,0)
- OpenGL简单立方体未出现,使用统一块
- OpenGL布尔统一