【问题标题】:GLSL ES 2.0 - Alternative for UBO?GLSL ES 2.0 - UBO 的替代品?
【发布时间】:2013-06-01 16:49:30
【问题描述】:
根据我对 GLSL ES 2.0 的 invariant 关键字的阅读,这听起来有点像可以被视为统一缓冲区对象提供的功能的同义词,因为多个着色器程序可以“共享”为各种输入提供的数据。我想知道的是这是否可以以任何方式用作 UBO 的替代品。由于 OpenGL ES 2.0 似乎不提供对 UBO 的支持,并且如果 invariant 关键字不能作为替代,是否可以使用扩展或其他方式获得类似的功能?
【问题讨论】:
标签:
opengl-es
opengl-es-2.0
glsl
glsles
【解决方案1】:
invariant 与统一缓冲区完全无关。 invariant 表示如果两个单独的着色器具有相同的输入值并使用相同的表达式来计算 invariant-qualified 输出,则输出将保证在两个着色器中产生相同的值 .如果没有该限定符,则不存在这样的保证。
invariant 与共享“为各种输入提供的数据”无关。 invariant 是关于输出是如何限定和计算的。
至于您的其他问题,不,OpenGL ES 2.0 与 UBO 没有任何相似之处。您必须将不同程序上的不同制服设置为相同的值。