0:13(22):错误:GLSL 1.10中保留运算符'%'(需要GLSL 1.30或GLSL ES 3.00)
有点不知所措来发现这个错误!
我最初想要包裹纹理坐标以使它们保持在0-1范围内 - 但模数是一个非常有用的功能,我可以用通用替换!
答案 0 :(得分:1)
嗯,首先在做支持%
的实现中,它是一个整数操作,就像大多数敏感语言一样(Java是古怪的)。你想要的似乎是浮点数。
所有版本的OpenGL ES都支持mod (...)
,这应该可以满足您的需求。
答案 1 :(得分:1)
模数操作有一个内置函数,称为mod()
。它需要两个参数。第一个可以是矢量也可以是浮点数。例如,如果x
,y
和r
是浮点变量,v1
和v2
变量类型为vec3
:
r = mod(x, y); // calculates x % y
v2 = mod(v1, y); // calculates component wise v2[i] = v1[i] % y
还有一个更专业的fract()
函数,可以用除数1.0计算模数。