0

我想问一个关于 OpenGL ES 2.x 的简单问题(或者我认为它对大多数最近的 OpenGL 版本都有效)。

以下哪一项更快?:

  1. 根据我绘制的内容附加/分离多个着色器,
  2. 具有用于检查渲染模式的统一变量;因此,我将有一堆 if-else 条件(或即 switch-case 块)。我知道这对 GPU 内核不利;但是您可以假设我随后渲染了同一组图元;即我不会如此频繁地从一种模式切换到另一种模式。

如果您可以解释每种解决方案的优缺点;真的很感激。第三种解决方案总是受欢迎的。

4

1 回答 1

0

这实际上取决于要计算的数据量,无论何时您需要进行片段处理等等。

根据经验,应尽可能避免更改状态,因为它们会触发管道刷新。更糟糕的是,更改制服也可能触发管道刷新。如果您没有使用所有着色器吞吐量,请尝试使用该条件。

编辑:如果您重新排序数据以便只有少量状态更改,则应该可以更改着色器并允许输出更多片段。但同样,真的取决于你的瓶颈在哪里。

提示:测量。

于 2013-05-09T12:54:56.010 回答