我正在使用GPUImage框架进行iOS项目。我的着色器无法编译。
我的片段着色器中有一个函数:
const vec2 boundMin = vec2(0.0, 0.0);
const vec2 boundMax = vec2(1.0, 1.0);
bool inBounds (vec2 p) {
return all(lessThan(boundMin, p)) && all(lessThan(p, boundMax));
}
着色器编译日志:
ERROR: 0:1: '_Bool' : syntax error syntax error
当我替换所有对函数的调用时
inBounds(vec2 p)
与
all(lessThan(boundMin, p)) && all(lessThan(p, boundMax))
它很棒!
问题:
OpenGL ES 2.0片段着色器是否支持bool功能?如果是这样,我哪里出错了?如果不是,为什么会喜欢的功能all()
,lessThan()
等等。
环境:iPad mini,iOS 7,OpenGL ES 2.0,Xcode 5.0.2
我终于明白了!
GPUImage使用SHADER_STRING()解析着色器。
在我编写时bool
,LLVM Objective-C编译器不知道此段代码将转换为着色器字符串。当编译器看到bool
它将替换bool
为_Bool
,因为在Objective-Cbool
中定义为_Bool
!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句