加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【Cocos2d-x】shader语法注意事项

发布时间:2020-12-14 21:04:21 所属栏目:百科 来源:网络整理
导读:1. 不要用隐式类型转换 例子1: int i = 5; // 没问题float r = i * 0.05; // 有问题 例子2: float a = 0; // 定义和赋值float不能不加".0" 以上两个例子在OpenGL上没任何问题,但在移动端测试表明,在OpenGL es上会编译失败。 2. 不能用循环,for和while都

1. 不要用隐式类型转换

例子1:

int i = 5; // 没问题
float r = i * 0.05; // 有问题

例子2:
float a = 0; // 定义和赋值float不能不加".0"

以上两个例子在OpenGL上没任何问题,但在移动端测试表明,在OpenGL es上会编译失败。


2. 不能用循环,for和while都不能

GLSL用for和while循环在OpenGL上运行或许没问题,在大多数手机上或许也没问题,但就是在某些手机上(比如小米4)会直接崩溃,所以建议还是不要用。在我的描边shader里,一开始也是用循环的,但后来就是由于在小米4上崩溃,所以才意识到不能用循环,这是一个坑。


3. 不能用%,用mod(x,y)
GLSL里面没有C语言的%,用mod函数代替。


4. 如果用引擎3.x版本的STRINGIFY方法,记得要在#ifdef和#endif的前后加n(见ccShaders.cpp)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读