Java Mac(而非Windows)上的GLSL着色器错误:无法从';常量int';至';浮点的四分量向量';

Java Mac(而非Windows)上的GLSL着色器错误:无法从';常量int';至';浮点的四分量向量';,java,opengl,glsl,libgdx,glsles,Java,Opengl,Glsl,Libgdx,Glsles,我是个新手,昨天就开始和他们一起玩了。它们在我的Windows PC上可以正常编译,但在Mac上运行时,两者都会出现错误: 错误:0:14:“=”:无法从“常量int”转换为“4分量” 浮点数向量 在Android上,只有第二个着色器给了我一个错误。上面的错误提到没有重载的匹配函数点 它们使用相同的顶点着色器: attribute vec4 a_position; attribute vec4 a_color; attribute vec2 a_texCoord0; uniform mat4

我是个新手,昨天就开始和他们一起玩了。它们在我的Windows PC上可以正常编译,但在Mac上运行时,两者都会出现错误:

错误:0:14:“=”:无法从“常量int”转换为“4分量” 浮点数向量

在Android上,只有第二个着色器给了我一个错误。上面的错误提到没有重载的匹配函数点

它们使用相同的顶点着色器:

attribute vec4 a_position;
attribute vec4 a_color;
attribute vec2 a_texCoord0;

uniform mat4 u_projTrans;

varying vec4 vColor;
varying vec2 vTexCoord;

void main() {
    vColor = a_color;
    vTexCoord = a_texCoord0;
    gl_Position =  u_projTrans * a_position;
}
一个片段着色器(Mac上的错误):

另一个片段着色器(mac和android上的错误):


在第一个着色器中,这一行有错误-
texColor.rgb=1.0-texColor.rgb您需要编写:

texColor.rgb = vec3(1.0) - texColor.rgb;
在第二个着色器中,这一行有错误-
vec4 color=dot(灰色,texColor)灰色为vec3,texcolor为vec4。vec3和vec4之间的点积是什么?没有这样的
dot
函数可以做到这一点。您可以调用
浮点点(vec3,vec3)
浮点点(vec4,vec4)
。因此,将该行更改为:

vec4 color = vec4(dot(gray, texColor.rgb));


(下次请告诉我们错误发生在哪一行)

哪个文件中的哪一行导致了此错误?非常感谢。我很乐意分享行号,但那是唯一的错误。我不知道我是否需要某种剖析器或其他东西来从中获得更多信息。对不起,我不能提供更多。
texColor.rgb = vec3(1.0) - texColor.rgb;
vec4 color = vec4(dot(gray, texColor.rgb));
vec4 color = vec4(dot(vec4(gray, ???), texColor)); // put in ??? float number you want