[英]function with bool return type in OpenGL ES shader using GPUImage
我正在使用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-C中, bool
被定义为_Bool
!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.