获取纹素大小的glsl代码vec2 tex_offset = 1.0 / textureSize(image, 0);
在 #version 330 core
中编译正常,但是在 #version 300 es
中无法通过编译
报错信息
1
2
3
4
5
6
7
```
err: 0:15(20): error: could not implicitly convert operands to arithmetic operator
0:20(44): warning: `tex_offset' used uninitialized
0:21(44): warning: `tex_offset' used uninitialized
0:25(49): warning: `tex_offset' used uninitialized
0:26(49): warning: `tex_offset' used uninitialized
```
原因是 textureSize(image, 0) 的结果是一个ivec2 整数类型,需要显式的进行整数到浮点数的类型转换,使用以下代码
1
2
3
4
```
ivec2 texSize = textureSize(image, 0);
vec2 tex_offset = vec2(1.0) / vec2(texSize);
```