3

在我目前制作的游戏中,我有两个着色器:

  • 一个用于纹理图集上的精灵和
  • 一个单独加载的粒子形状纹理。(我决定将此纹理保留在图集中,因为我的生成器中的粒子是 GL_POINTS)。

目前,我将它们中的每一个绑定到一个单独的纹理单元,然后将每个着色器的统一设置为相应的纹理单元。我发现以这种方式绑定纹理一次是干净的,但想知道是否有任何理由说明这是一种不好的方法。

我已经广泛搜索了有关此方法的任何讨论,但似乎没有多少人这样做,我自己对它的安全性产生了怀疑。

有没有人自己使用过这种方法,或者知道为什么它可能不是一个好主意?

4

1 回答 1

1

间接地,是的,我使用这种方法并且它是安全的。但这是渲染引擎级别优化的副作用。

如果您避免多次绑定相同的纹理,您可以(也许)获得一些性能。在我的引擎中,在渲染某些东西之前,我只绑定尚未绑定的材质纹理。(按材质和纹理对实体进行分类后效率高)

因为可以同时使用多个纹理单元,所以测试是在纹理单元级别进行的。

这种优化对于大场景来说是值得的。(数百个绘图调用,至少有 30 个纹理)。

在您的情况下,因为只有两个纹理和两个着色器,您为什么要尝试删除一些纹理绑定?你能衡量你赢得了多少表现吗?你是否为此牺牲了灵活性?

薇薇安

于 2013-04-21T15:29:25.260 回答