Ios GLSL-更改为vec3颜色

Ios GLSL-更改为vec3颜色,ios,opengl-es,glsl,shader,openframeworks,Ios,Opengl Es,Glsl,Shader,Openframeworks,我是shaders的新手,几个小时来一直在努力解决这个问题。。。我在glslsandbox上找到了一个绘制简单网格的着色器。我正在尝试理解如何将网格的颜色从一个十进制更改为vec3颜色 float x = gl_FragCoord.x - gl_FragCoord.y; float y = gl_FragCoord.y + gl_FragCoord.x; bool grid = mod(x, CELL_SIZE) < LINE_WIDTH || mod(x, CELL_SIZE) <

我是shaders的新手,几个小时来一直在努力解决这个问题。。。我在glslsandbox上找到了一个绘制简单网格的着色器。我正在尝试理解如何将网格的颜色从一个十进制更改为vec3颜色

float x = gl_FragCoord.x - gl_FragCoord.y;
float y = gl_FragCoord.y + gl_FragCoord.x;
bool grid = mod(x, CELL_SIZE) < LINE_WIDTH || mod(x, CELL_SIZE) < LINE_WIDTH;
float color = grid ? 1.0 : 0.0; 
gl_FragColor = vec4( vec3( color ), 0.2 );

它只允许我使用黑色、白色和灰色。关于如何将两种颜色都更改为vec3,您有什么想法吗?

尽管我还没有测试过,但下面类似的内容应该可以使用:

lowp vec3 gridColor = vec3(0.5,0.5,0.0);
lowp vec3 nonGridColor = vec3(0.5,0.0,0.5);
vec3 colorv = grid ? gridColor : nonGridColor;
gl_FragColor = vec4( colorv, 0.2 );

lowp vec3 color=grid?vec3(0.0):vec3(1.0)
?您错过了第三个vec3上的精度限定符;)非常好用,谢谢!快速提问:有什么理由专门使用lowp而不是high或med?您只使用小数点后一位的值,所以根本不需要高精度。限定符没有硬性定义的精度范围,这取决于具体的实现。在某些情况下,使用较低的精度可以提高性能,因此最好尽可能地使用它们,尽管对于更详细的渲染,可能需要更高的精度。这很有意义。谢谢@originaluser2
lowp vec3 gridColor = vec3(0.5,0.5,0.0);
lowp vec3 nonGridColor = vec3(0.5,0.0,0.5);
vec3 colorv = grid ? gridColor : nonGridColor;
gl_FragColor = vec4( colorv, 0.2 );