1

从我读到的invariantGLSL ES 2.0 的关键字来看,这听起来有点像可以被认为是统一缓冲区对象提供的功能的同义词,因为多个着色器程序可以“共享”提供的数据各种输入。我想知道的是这是否可以以任何方式用作 UBO 的替代品。由于 OpenGL ES 2.0 似乎不提供对 UBO 的支持,并且如果invariant关键字不能作为替代,是否可以使用扩展或其他方式获得类似的功能?

4

1 回答 1

2

invariant与统一缓冲区完全无关。invariant意味着如果两个单独的着色器具有相同的输入值并使用相同的表达式来计算invariant-qualified 输出,则输出将保证在两个着色器中产生相同的值。如果没有该限定词,则不存在这样的保证。

invariant与共享“为各种输入提供的数据”无关。invariant是关于如何限定和计算输出。

至于您的其他问题,不,OpenGL ES 2.0 与 UBO 没有任何相似之处。您必须将不同程序上的不同制服设置为相同的值。

于 2013-06-01T08:49:30.147 回答