タイトルが言ったように、glDrawElements を呼び出すたびに異なる均一な vec4 (または他の何か) 値をシェーダーに渡すにはどうすればよいですか? このようにすることは可能です:
シェーダー:
uniform vec4 material_ambident;
void main(void)
{
// Do somethings
}
render() は次のようになります。
glUseProgram(program);
glUniform4fv(unf_matrial_ambident, 2, &float_array[0]);
// Bind buffer or somethings ...
glDrawElements(..);
glUniform4fv(unf_matrial_ambident, 2, &another_float_array[0]);
// Bind another buffer
glDrawElements(..);