Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hardcoding GLSL texture sampler2D

Tags:

glsl

opengl-es

In my fragment shader, I have the line

gl_FragColor = texture2D(texture, destinationTextureCoordinate) * destinationColor;

Where texture is a uniform of type sampler2D. In my code , I always set this to the value '0'.

glUniform1i(_uniformTexture, 0);

Is it possible to skip the call to glUniform1i and just hardcore 0 in the fragment shader? I tried just replacing texture with 0 and it complained about not being a valid type.

like image 803
Mr. Smith Avatar asked Oct 18 '25 22:10

Mr. Smith


1 Answers

You need a layout, like this:

#version 420
//#extension GL_ARB_shading_language_420pack: enable  Use for GLSL versions before 420.

layout(binding=0) uniform sampler2D diffuseTex;

In that way you are getting a binding to the sampler uniform 0. I think that is what you want. But keep in mind that when you are binding uniforms they got incremental values from zero, so be sure what you want to bind. The idea to bind uniform variables via the glUniform1i() function is to ensure the correctness of your code.

Source: http://www.opengl.org/wiki/GLSL_Sampler#Version_4.20_binding

like image 76
Pato Sandaña Avatar answered Oct 21 '25 00:10

Pato Sandaña



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!