glsl 1.1中模数缺失 - 如何解决问题

时间:2014-05-12 16:03:37

标签: math opengl-es glsl

0:13(22):错误:GLSL 1.10中保留运算符'%'(需要GLSL 1.30或GLSL ES 3.00)

有点不知所措来发现这个错误!

我最初想要包裹纹理坐标以使它们保持在0-1范围内 - 但模数是一个非常有用的功能,我可以用通用替换!

2 个答案:

答案 0 :(得分:1)

嗯,首先在支持%的实现中,它是一个整数操作,就像大多数敏感语言一样(Java是古怪的)。你想要的似乎是浮点数。

所有版本的OpenGL ES都支持mod (...),这应该可以满足您的需求。

答案 1 :(得分:1)

模数操作有一个内置函数,称为mod()。它需要两个参数。第一个可以是矢量也可以是浮点数。例如,如果xyr是浮点变量,v1v2变量类型为vec3

r = mod(x, y);  // calculates x % y
v2 = mod(v1, y);  // calculates component wise v2[i] = v1[i] % y

还有一个更专业的fract()函数,可以用除数1.0计算模数。