写Shader部署到手机的过程中遇到的问题

const

今天遇到了一个说不上奇怪的问题,这里记录一下:
在电脑端的shader是这样写的:

uniform sampler2D texture;
uniform vec2 sizeInfo;
varying mediump vec2 texcoord;
const vec2 src_size = vec2 (1.0 / sizeInfo.x, 1.0 / sizeInfo.y);

但是部署到手机端的时候,就报错。正确的写法是将const去掉。

这个问题是const的问题,在着色器编译的时候,sizeInfo并没有确定,并不能设置为const对象,所以在手机端的时候就会报错,但是在电脑端因为版本优化的问题则不会报错。

构造

先构造一个空的,然后在赋值。

vec2 texcoord_tmp;
texcoord_tmp.x = texcoord.x/2;
texcoord_tmp.y = texcoord.y/2;

这其实是不好的习惯,在构造的时候就应该赋值,代码也会短很多。

vec2 texcoord_tmp = texcoord.xy/2.0;

你可能感兴趣的:(Shader)