Java GLSL着色器-片段着色器未编译
我刚刚写了这个着色器,但它没有编译,我已经搜索了几个小时,甚至检查了验证器,我找不到编译错误是什么。这是我最后的办法,有人能在这里发现什么错误吗Java GLSL着色器-片段着色器未编译,java,compiler-errors,glsl,shader,fragment-shader,Java,Compiler Errors,Glsl,Shader,Fragment Shader,我刚刚写了这个着色器,但它没有编译,我已经搜索了几个小时,甚至检查了验证器,我找不到编译错误是什么。这是我最后的办法,有人能在这里发现什么错误吗 #version 150 core uniform sampler2D texture1; in vec4 pass_Color; in vec2 pass_TextureCoord; in vec2 pass_Velocity; out vec4 out_Color; void main(void) { out_Color = pa
#version 150 core
uniform sampler2D texture1;
in vec4 pass_Color;
in vec2 pass_TextureCoord;
in vec2 pass_Velocity;
out vec4 out_Color;
void main(void) {
out_Color = pass_Color;
vec4 color = texture(texture1, pass_TextureCoord) * pass_Color ;
pass_TextureCoord += pass_Velocity;
for(int i = 1; i < 6; ++i, pass_TextureCoord += pass_Velocity)
{
vec4 currentColor = texture(texture1, pass_TextureCoord) * pass_Color ;
color += currentColor;
}
out_Color = (color / 6.0f);
}
#版本150核心
均匀的二维纹理1;
在vec4中,通过颜色;
在vec2中,通过纹理命令;
在vec2中,通过速度;
out vec4 out_颜色;
真空总管(真空){
输出颜色=通过颜色;
vec4颜色=纹理(纹理1,通过纹理命令)*通过颜色;
通过纹理命令+=通过速度;
对于(int i=1;i<6;++i,通过纹理命令+=通过速度)
{
vec4 currentColor=纹理(纹理1,传递纹理命令)*传递颜色;
颜色+=当前颜色;
}
输出颜色=(颜色/6.0f);
}
我使用以下命令检索日志:
它说我正试图给一个变量赋值。基本上我不能更改前缀为in的变量
在本例中,我试图将pass\u Velocity添加到pass\u TextureCoord中,因此尝试更改该值,这是不允许的。会出现什么错误?好吧,只是它没有成功编译..嗯,没有。着色器没有简单地“没有成功编译”。OpenGL有一个广泛的API,用于从失败的编译中获取错误消息。您需要使用这个API.GLU.GlueErrorString(errorValue);给我一个无效的操作。另外,GL20.glGetShaderi(shaderID,GL20.GL_COMPILE_STATUS)=GL11.GL_FALSE在该特定着色器上的计算结果为true。
gluErrorString
不是我所说的。GLU甚至不是OpenGL;这是一个独立的图书馆。
GL20.glGetShaderInfoLog(shaderID,GL20.glGetShaderi(shaderID,GL20.GL_INFO_LOG_LENGTH));