シェーダープログラムの状態に均一な値が格納されることは既に学習しました。
// 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);
sampler2D
テクスチャ ID をシェーダーのユニフォームにバインドする方法はありますか? こうすれば、パスごとにすべてのテクスチャを手動でバインドする必要がなくなります。