我已经了解到统一值存储在着色器程序的状态中。
// GLSL code
uniform mat4 projection;
// C++ code
GLuint location = glGetUniformLocation(program, "projection");
glUniformMatrix4fv(location, 1, GL_FALSE, pointer);
但这似乎不适用于纹理制服,因为它们受纹理槽的编号而不是它们的 id 约束。
// GLSL code
uniform sampler2D albedo;
// C++ code
int slot = 3;
glActiveTexture(GL_TEXTURE0 + slot);
glBindTexture(GL_TEXTURE_2D, id);
GLuint location = glGetUniformLocation(program, "albedo");
glUniform1i(location, slot);
有没有办法将纹理 ID 绑定到sampler2D
着色器的制服?这样我就不必为每个通道手动绑定所有纹理。