确保所有矢量分量都大于某个数字

Bon*_*Oak 4 opengl glsl

我有一个vec2包含x和y坐标.我需要确保它们都大于16.我的第一次尝试:

if (gl_FragCoord.xy > 16.0) {
  // do something..
}
Run Code Online (Sandbox Code Playgroud)

它无法使用"无匹配操作数"错误进行编译.

如果我分别比较矢量的每个维度,它就有效.

if ((gl_FragCoord.x > 16.0) && (gl_FragCoord.y > 16.0))
  // do something..
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法一次检查向量的所有元素?

Kir*_*nko 6

有一个用于组件比较函数,它产生一个布尔向量,然后另一个用于检查布尔向量的组件:

if (all(greaterThan(gl_FragColor.xy, vec2(16.0))) {
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)