Glsl着色器未设置为实例

时间:2013-10-11 02:00:32

标签: c# glsl

你好,任何人都可以帮我解决这行代码吗?香港专业教育学院一直面临这个对象没有设置为实例错误,我得到了这个方法来尝试由stackoverflow的人。非常感谢!

string shader = @"#version 120
#version 150 compatibility

uniform sampler2D tex;

void main()
{       
     vec4 pixcol = texture2D(tex, gl_TexCoord[0].xy);
     vec4 colors[3];
     colors[0] = vec4(0.,0.,1.,1.);
     colors[1] = vec4(1.,1.,0.,1.);
     colors[2] = vec4(1.,0.,0.,1.);
     float lum = (pixcol.r+pixcol.g+pixcol.b)/3.;
     int ix = (lum < 0.5)? 0:1;
     vec4 thermal = mix(colors[ix],colors[ix+1],(lum-float(ix)*0.5)/0.5);
     gl_FragColor = thermal;
}";

GL.ShaderSource(m_shader_handle, shader);

1 个答案:

答案 0 :(得分:1)

https://www.opengl.org/wiki/Core_Language_(GLSL)#Version

  

除了空格和注释外,#version指令必须出现在着色器中的任何其他内容之前。如果#version指令没有出现在顶部,那么它假定为1.10,这几乎肯定不是你想要的。

使用一个版本 120 150

<强>尝试:

string shader = @"#version 150 compatibility // or 120 if you want

uniform sampler2D tex;