I have these 2 fragment shaders:
Simple.fragment:
#version 330 core
in vec2 UV;
out vec4 color;
uniform sampler2D myTextureSamplerr;
void main(){
//use the texture
}
Unlit.fragment:
#version 330 core
in vec2 UV;
out vec4 color;
uniform sampler2D myTextureSamplerr;
void main(){
//use the texture
}
And that's how I load them:
public static int loadTexture(String imagepath) {
Image image = new Image();
IntBuffer width = BufferUtils.createIntBuffer(1);
IntBuffer height = BufferUtils.createIntBuffer(1);
IntBuffer comp = BufferUtils.createIntBuffer(1);
ByteBuffer data = stbi_load(imagepath, width, height, comp, 4);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width.get(), height.get(), 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
id = glGenTextures();
stbi_image_free(data);
return id;
}
How to send a texture to first shader and another to the unlit one? Because even if I call the loadTexture method with 1 texture for a lit object and with the 2nd texture for the unlit one the both objects will use the 2nd texture(last called)
I think the problem is this line: glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width.get(), height.get(), 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
It searched for uniform sampler2D and give the image to all of them.