Jan*_*egg 31 c++ opengl shader boolean
我正在尝试向OpenGL glsl着色器发送一个布尔值.
目前我在着色器中有这个:
uniform bool foo;
Run Code Online (Sandbox Code Playgroud)
我用它来设置它:
glUniform1i(glGetUniformLocation(shader, "foo"), true);
Run Code Online (Sandbox Code Playgroud)
似乎没有glUniform1b
,所以我将其设置为整数.这似乎工作正常.
这种方法有什么问题吗?它是便携式的,还是可以打破其他显卡/驱动程序?我目前正在使用OpenGL 4.3.
Bar*_*icz 30
§4.1基本类型 OpenGL着色语言支持以下基本数据类型,分组如下:
bool
条件类型,取值为true或falsebvec2
双组分布尔向量bvec3
三分量布尔向量bvec4
四分量布尔矢量
...
§4.1.2布尔值为了使代码的条件执行更容易表达,支持类型bool.不期望硬件直接支持这种类型的变量.(......)
至于设定:
§2.2.1(...)当使用与该状态的实际类型不同的参数类型指定状态值时,数据转换按如下方式执行:
- 当内部状态的类型为布尔值时,将零整数或浮点值转换为
FALSE
非零值,并将非零值转换为TRUE
.
归档时间: |
|
查看次数: |
18667 次 |
最近记录: |