我想使用glUniform1ui为渲染调用提供运行索引,以便可以在实际制服所在的着色器中为ubo编制索引。 如果我每个抽奖电话只设置一次,这会导致多少开销?
我不能使用glMultiDrawArraysIndirect,因为必须使用GLES 3.1。
答案 0 :(得分:2)
在taxonomy of state change performance中,更新制服是您可以做的最便宜的事情。更改UBO绑定更加昂贵。
因此,与每个对象的UBO绑定相比,每个对象应该统一更新一次。
但是,由于您使用的是具有SSBO的ES 3.1,因此,与UBO相比,使用SSBO而不是UBO可能要好得多,这仅仅是因为您可以从SSBO访问的内容很多。
答案 1 :(得分:0)
设置制服的性能成本应该可以忽略不计,但是在着色器中进行间接数据查找可能相对昂贵。
鉴于您的目标是3.x,我将尝试使用glBindBufferRange()
,它可以让您以任意偏移量绑定缓冲区。