glBufferSubData手册页的注释部分包含以下段落:
考虑使用多个缓冲区对象以避免在数据存储更新期间停止渲染管道。如果管道中的任何渲染引用了由 glBufferSubData 更新的缓冲区对象中的数据,尤其是来自正在更新的特定区域的数据,则该渲染必须从管道中排出,然后才能更新数据存储。
虽然glUniform* 手册页根本没有提到管道。
但是,我会认为制服与缓冲区一样重要,因为它们应该在所有着色器调用中都是统一的。
所以,如果我执行一个绘制调用,更改一个统一值,然后在同一个着色器上执行另一个绘制调用,两个绘制调用会以不同的统一值同时运行,还是第二个绘制调用必须等到每个阶段(vert/ geom/frag) 第一个是完整的吗?