我今天刚刚为shadertoy.com创建了一个帐户,而我是OpenGL的新手,只知道一些JavaScript和Processing。我试图在2个整数上使用按位xor,我得到如下错误:
'^':仅在GLSL ES 3.00及更高版本中支持逐位运算符。
我用Google搜索并找到了this。我在“图片”标签的顶部插入了#version 300 es
。由于我的聪明,我得到了愉快的回报,并出现以下错误:
'version':#version指令必须先于其他任何内容,但注释和空格除外。
所以,我真正的问题是我应该在Shadertoy中放置#version指令吗?
Post Scriptum;我的实验是here。
答案 0 :(得分:2)
那是因为ShaderToy'可能'会为您插入版本。并且GLSL要求您将版本指令放在着色器字符串的开头。您必须考虑到它们的GLSL编辑器中的内容并不是提交给GLSL编译器的内容的全貌。他们在你看不到的引擎盖下添加更多信息,#version
是你无法控制的隐藏事物之一。
此外,看起来ShaderToy不支持WebGL2或GLSL 300,DOES support XOR运算符。因此,您应该联系网站所有者,并在计划添加支持时询问他们。
答案 1 :(得分:2)
如果要使用XOR运算符,请尝试在Chrome或其他支持WebGL2的浏览器中打开相同的着色器。查看您的浏览器是否支持WebGL2 here。