在我目前正在生产的游戏中,我有两个着色器:

  • 用于纹理图集和
  • 上的精灵
  • 一种单独加载的粒子状纹理。 (由于生成器中的粒子是GL_POINTS,因此我决定将此纹理排除在地图集之外)。

  • 当前,我将其中每个绑定到单独的纹理单元,然后将每个着色器的统一设置为各自的纹理单元。我发现以这种方式只绑定一次纹理是干净的,但是我想知道是否有任何理由为什么使用这种不好的方法。

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

    有没有人自己使用过这种方法,或者有什么原因可能不是个好主意?

    最佳答案

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

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

    由于可以同时使用多个纹理单元,因此将在纹理单元级别执行测试。

    对于大型场景而言,这种优化值得付出代价。 (数百个至少具有三十个纹理的绘制调用)。

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

    薇薇安

    10-07 19:13
    查看更多