glUniform1ui的费用

时间:2019-01-21 16:36:56

标签: c++ opengl-es arm

我想使用glUniform1ui为渲染调用提供运行索引,以便可以在实际制服所在的着色器中为ubo编制索引。 如果我每个抽奖电话只设置一次,这会导致多少开销?

我不能使用glMultiDrawArraysIndirect,因为必须使用GLES 3.1。

2 个答案:

答案 0 :(得分:2)

taxonomy of state change performance中,更新制服是您可以做的最便宜的事情。更改UBO绑定更加昂贵。

因此,与每个对象的UBO绑定相比,每个对象应该统一更新一次。

但是,由于您使用的是具有SSBO的ES 3.1,因此,与UBO相比,使用SSBO而不是UBO可能要好得多,这仅仅是因为您可以从SSBO访问的内容很多。

答案 1 :(得分:0)

设置制服的性能成本应该可以忽略不计,但是在着色器中进行间接数据查找可能相对昂贵。

鉴于您的目标是3.x,我将尝试使用glBindBufferRange(),它可以让您以任意偏移量绑定缓冲区。