【发布时间】:2016-05-14 19:30:15
【问题描述】:
我们有几个不同的 opengles2.0 着色器,每个着色器都使用不同的制服。我们使用 glGetUniformLocation 来获取每个制服的数据写入位置。然而,这意味着当我们切换着色器程序时,例如,有时我们会将相机矩阵写入一个位置,有时写入另一个位置,这一切都取决于为该着色器定义了哪些制服。这意味着我们不能通过检查要上传的值是否已更改来轻松减少冗余着色器统一上传,因为我们可能需要重新上传它以覆盖由不同着色器为不同统一写入的值。
虽然我知道可以在每个着色器程序中包含相同的制服,但无论是否使用它们,glGetUniformLocation 是否会为每个程序返回相同的位置?或者,例如,着色器编译器可能会删除未引用的制服并将其余部分捆绑在一起,从而导致每个着色器将其制服放在不同的位置。这适用于 IOS 和 Android。
谢谢
肖恩
【问题讨论】:
标签: android c++ ios opengl-es-2.0