Win编译运行正常,但是安卓编译出错,报错信息为:Compile FragmentShader Failed : L0001: Expected token ' ; ',found ' = '.
查明是语法问题,解决后总结如下:
变量类型问题:
对于变量运算,GLSL 中有非常严格的规则,即 只有类型一致时,变量才能完成赋值或其它对应的操作。 可以通过对应的构造器来实现类型转换。
float myFloat = 1.0; bool myBool = true; myFloat = float(myBool); // bool -> float myBool = bool(myFloat); // float -> bool
数组使用问题:
- 除了 uniform 变量之外,数组的索引只允许使用常数整型表达式。
- 在 GLSL 中不能在创建的同时给数组初始化,即数组中的元素需要在定义数组之后逐个初始化,且数组不能使用 const 限定符。