Java GLSL错误意外$end at token“&书信电报;EOF>&引用;和格式问题

Java GLSL错误意外$end at token“&书信电报;EOF>&引用;和格式问题,java,opengl,glsl,shader,Java,Opengl,Glsl,Shader,所以我有一个任务,就是用opengl画一个三角形,让它做各种各样的事情。但我的顶点着色器文件有一个问题 出于某种原因,如果我尝试在着色器文件中添加新行,它将断开并且不显示三角形。例如,如果我换了一行 #版本430 输出矢量4可变颜色; 统一浮动抵销; 均匀梯度变化; 均匀浮动尺寸; 统一浮动补偿; 统一浮动抵销; 这将中断,不再显示三角形。但是当我把它们都放在一行时,我得到了一个错误,但是我得到了代码的全部功能,三角形显示,它移动等等 (0):错误C0000:语法错误,令牌“”处意外出现$en

所以我有一个任务,就是用opengl画一个三角形,让它做各种各样的事情。但我的顶点着色器文件有一个问题 出于某种原因,如果我尝试在着色器文件中添加新行,它将断开并且不显示三角形。例如,如果我换了一行

#版本430
输出矢量4可变颜色;
统一浮动抵销;
均匀梯度变化;
均匀浮动尺寸;
统一浮动补偿;
统一浮动抵销;
这将中断,不再显示三角形。但是当我把它们都放在一行时,我得到了一个错误,但是我得到了代码的全部功能,三角形显示,它移动等等

(0):错误C0000:语法错误,令牌“”处意外出现$end

这是我的顶点着色器

#版本430
输出矢量4可变颜色;统一浮动抵销;均匀梯度变化;均匀浮动尺寸;统一浮动补偿;统一浮动抵销;
无效主(无效){
如果(gl_VertexID==0){gl_Position=vec4(大小*(0.25)+offsetCx,大小*(-0.25+offsetV)+offsetCy,0.0,1.0);}
如果(gl_VertexID==1){gl_Position=vec4(大小*(-0.25)+offsetCx,大小*(-0.25+offsetV)+offsetCy,0.0,1.0)}
如果(gl_VertexID==2){gl_Position=vec4(大小*(0.0)+偏移量cx,大小*(0.25+偏移量v)+偏移量cy,0.0,1.0);}
如果(gradientChange==0){varyingColor=vec4(1.0,0.0,0.0,1.0);}
}
这是我的片段着色器

#版本430
输出vec4颜色;
在vec4中变颜色;
真空总管(真空){
颜色=可变颜色;
}

private int createShaderProgram(){
GL4 gl=(GL4)GLContext.getCurrentGL();
int[]=新的int[1];
int[]fragCompiled=新int[1];
int[]链接=新的int[1];
字符串vshaderSource[];
字符串fshaderSource[];
vshaderSource=readShaderSource(“src/code/vertShader.glsl”);
fshaderSource=readShaderSource(“src/code/fragShader.glsl”);
int vShader=gl.glCreateShader(gl_顶点_着色器);
gl.glShaderSource(vShader,3,vshaderSource,null,0);
gl.glCompileShader(vShader);
//捕获错误代码块
checkOpenGLError();
glGetShaderiv(vShader,gl_COMPILE_STATUS,vertcomiled,0);
如果(0)!=1){
System.out.println(“vertext编译失败”);
printShaderLog(vShader);
}
int fShader=gl.glCreateShader(gl_片段_着色器);
gl.glShaderSource(fShader,4,fshaderSource,null,0);
gl.glCompileShader(fShader);
//捕获错误代码块
checkOpenGLError();
glGetShaderiv(fShader,gl_COMPILE_STATUS,fragCompiled,0);
如果(fragCompiled[0]!=1){
System.out.println(“片段编译失败”);
printShaderLog(fShader);
}
如果((vertCompiled[0]!=1)| |((fragCompiled[0]!=1))){
System.out.println(“\n编译错误;返回标志:”);
System.out.println(“vertcomplied=“+vertcomplied[0]”+“fragcomplied”+fragcomplied[0]);
}
gl.glShaderSource(vShader,vshaderSource.length,vshaderSource,null,0);
gl.glShaderSource(fShader,vshaderSource.length,vshaderSource,null,0);
int vfProgram=gl.glCreateProgram();
glAttachShader(vfProgram,vShader);
glAttachShader(vfProgram,fShader);
gl.glLinkProgram(vfProgram);
gl.glDeleteShader(vShader);
gl.glDeleteShader(fShader);
返回VFP程序;
}
问题在于线路

gl.glShaderSource(vShader,3,vshaderSource,null,0);
分别

gl.glShaderSource(fShader,4,fshaderSource,null,0);
vshaderSource
fshaderSource
是字符串数组(
String[]
)。可以获取字符串数组。但必须将数组的长度设置为第二个参数:

gl.glShaderSource(vShader,vshaderSource.length,vshaderSource,null,0);
gl.glShaderSource(fShader,fshaderSource.length,fshaderSource,null,0);