GLSL’TEXTURE2D ‘: No matching overload function OpenGL ES2 is found on the iPhone

I am trying to use the GLSL shader, but when I try to get data from the texture to try a simple contrast enhancement algorithm, I get an interesting error.

< /p>

'texture2D': no ​​matching overloaded function found

It happens in this code, where “final” is the vec4 used to save the color being processed Variable. The idea here is to push the color of the pixel from the surrounding colors (experimental idea). I will mark the wrong line in the code.

highp vec4 tex = texture2D(tex,vec2(texcoord.x+1.0,texcoord.y));
highp float total = tex.r + tex.g + tex.b;
tex = texture2D(tex,vec2( texcoord.x-1.0,texcoord.y)); <----This one as well as the next similar lines
total += tex.r + tex.g + tex.b;
tex = texture2D(tex,vec2(texcoord.x,texcoord.y+1.0));
total += tex.r + tex.g + tex.b;
tex = texture2D(tex,vec2( texcoord.x,texcoord.y-1.0));
total += tex.r + tex.g + tex.b;
highp float di = 12.0;
highp vec4 close_av = total /di;
final = (final-close_av)*1.3+close_av;

Why doesn’t it work? Thank you.

Assuming that tex is initially declared as a unified sampler2D at the top of the shader source, it Redeclare the first line of the fragment as a local variable, which hides the original definition. Changing any variable to keep its name different should solve your compilation problem.

I’m trying Using GLSL’s shader, but when I tried to get data from the texture to try a simple contrast enhancement algorithm, I got an interesting error.

' texture2D': no ​​matching overloaded function found

It happens in this code, where “final” is the vec4 variable used to save the color being processed. The idea here is to change the color of the pixel from the surrounding color (Experimental idea). I will mark the wrong line in the code.

highp vec4 tex = texture2D(tex,vec2(texcoord.x+1.0,texcoord. y));
highp float total = tex.r + tex.g + tex.b;
tex = texture2D(tex,vec2(texcoord.x-1.0,texcoord.y)); <- ---This one as well as the next similar lines
total += tex.r + tex.g + tex.b;
tex = texture2D(tex,vec2(texcoord.x,texcoord.y +1.0));
total += tex.r + tex.g + tex.b;
tex = texture2D(tex,vec2(texcoord.x,texcoord.y-1.0));
total += tex.r + tex.g + tex.b;
highp float di = 12.0;
highp vec4 close_av = total/di;
final = (final-close_av) *1.3+close_av;

Why doesn’t it work? Thank you.

Assuming that tex is initially declared as a unified sampler2D at the top of the shader source, it will be re-declared as a local variable by the first line of the fragment , It hides the original definition. Changing any variable to keep its name different should solve your compilation problem.

Leave a Comment

Your email address will not be published.