Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 如何在每次调用gldrawerelements时将不同的统一vec4传递给着色器?_Opengl_Glsl - Fatal编程技术网

Opengl 如何在每次调用gldrawerelements时将不同的统一vec4传递给着色器?

Opengl 如何在每次调用gldrawerelements时将不同的统一vec4传递给着色器?,opengl,glsl,Opengl,Glsl,正如标题所说,每次调用gldrawerelements时,如何将不同的统一vec4(或其他)值传递给着色器?可以这样做: glUseProgram(program); glUniform4fv(unf_matrial_ambident, 2, &float_array[0]); // Bind buffer or somethings ... glDrawElements(..); glUniform4fv(unf_matrial_ambident, 2, &another_f

正如标题所说,每次调用gldrawerelements时,如何将不同的统一vec4(或其他)值传递给着色器?可以这样做:

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(..);
着色器:

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(..);

是的,您可以按照您认为的正确方式在绘图批次之间更换制服。

是时候接受Cat Plus的回答了!