为什么我应该使用常量顶点属性而不是制服?

纳雷克

我已经准备好几个有关恒定顶点属性和统一性的主题。已经找到了一些区别,但是不明白为什么需要它们。看来我总是可以使用制服代替CVA。有没有适合他们的好用例?

雷托·科拉迪(Reto Koradi)

我认为常量顶点属性(或CVA)不是标准术语。至少我从未听说过,您所链接的gamedev问题中的人们对此也感到困惑。所以我不认为它被广泛使用。

但是根据上下文,我知道了您的要求。您正在考虑在顶点着色器中使用属性的情况。但是,与其从缓冲区中拉出它们,不如像glVertexAttrib4f()在进行绘制调用之前那样通过调用设置它们,这意味着该值将保持不变,直到再次更改它为止。规范将这些值简称为“当前顶点属性值”。

现在,如果您应该以这种方式使用属性或制服,则没有明确的答案。通常,相对性能将取决于平台/硬件。我个人的观点是:

  • 制服应用于相对很少变化的值。理想情况下,每帧最多一次,或者至少比每次绘制调用的频率低得多。
  • 属性应用于经常更改的值。例如,如果要在每次绘制调用之前更改值,则可以使用一个属性。

这也与规范所说的一致。在关于制服的介绍部分中,它说(强调):

这些制服的值在图元上是恒定的,并且通常在许多图元上恒定的

统一更新在某些平台上可能非常有效,并且应用程序相当频繁地更改统一值当然并不罕见。但是恕我直言,这不是制服的预定用途。他们没有被称为制服

根据使用情况,还有一些其他差异可能会使一个或另一个更具吸引力:

  • 如果您有时使用缓冲区中的每个顶点值进行相同类型的渲染,而有时又想使用每个基本值,则使用属性非常方便。通过属性,您可以在这两种情况下继续使用相同的着色器,而如果您使用unifom,则需要使用不同的着色器。
  • 属性在它们支持的类型以及通常支持的数量上受到更多的限制。
  • 统一值是每个程序状态的一部分。属性值是全局状态的一部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我应该使用.forEach语法而不是for循环语法?

来自分类Dev

为什么我应该使用mergemap而不是嵌套的http调用?

来自分类Dev

为什么我不应该使用“ inout”而不是“ in”或“ out”?

来自分类Dev

为什么我应该使用方法而不是__init __()?

来自分类Dev

序言-为什么我应该使用'dif'而不是'= \ ='

来自分类Dev

为什么我应该使用Vagrant而不是VirtualBox?

来自分类Dev

为什么我应该总是使用|| 代替| 和&&而不是&?

来自分类Dev

为什么应该使用资源而不是路由?

来自分类Dev

python“array”模块有什么作用,为什么我应该使用它而不是列表?

来自分类Dev

为什么我应该使用CUDA驱动程序API而不是CUDA运行时API?

来自分类Dev

为什么我们应该使用类而不是记录,反之亦然?

来自分类Dev

为什么我应该在Android中使用匿名类而不是类重新定义?

来自分类Dev

为什么我不应该一直使用ICollection而不是IEnumerable?

来自分类Dev

为什么我应该使用简单数组而不是容器类?

来自分类Dev

为什么我应该使用DECLARE_DYNAMIC而不是DECLARE_DYNCREATE?

来自分类Dev

我应该使用ViewModelProvider而不是ViewModelProviders吗?如果是这样,为什么?

来自分类Dev

为什么我们应该使用接口而不是具体类型?

来自分类Dev

为什么我们应该使用本地php gettext而不是gettexxt库

来自分类Dev

为什么我应该使用float而不是display:table-cell?

来自分类Dev

Java FX为什么我应该使用SimpleProperties而不是普通的nativ变量?

来自分类Dev

为什么我应该使用$ cacheFactory而不是手动获取/设置数据?

来自分类Dev

为什么我应该使用块作用域而不是函数作用域?

来自分类Dev

为什么我应该在 Projectile Motion 中使用速度方程而不是位置方程

来自分类Dev

为什么我应该使用Django表格

来自分类Dev

为什么我应该使用JPanel?

来自分类Dev

为什么我可以定义一个静态常量,该静态常量依赖于同一类型的另一个静态常量,而不是属性?

来自分类Dev

为什么我们应该在jQuery中使用匿名函数而不是直接使用匿名函数?

来自分类Dev

顶点属性-在顶点位置使用short而不是float

来自分类Dev

为什么我的for循环使用“ &&”而不是“,”

Related 相关文章

  1. 1

    为什么我应该使用.forEach语法而不是for循环语法?

  2. 2

    为什么我应该使用mergemap而不是嵌套的http调用?

  3. 3

    为什么我不应该使用“ inout”而不是“ in”或“ out”?

  4. 4

    为什么我应该使用方法而不是__init __()?

  5. 5

    序言-为什么我应该使用'dif'而不是'= \ ='

  6. 6

    为什么我应该使用Vagrant而不是VirtualBox?

  7. 7

    为什么我应该总是使用|| 代替| 和&&而不是&?

  8. 8

    为什么应该使用资源而不是路由?

  9. 9

    python“array”模块有什么作用,为什么我应该使用它而不是列表?

  10. 10

    为什么我应该使用CUDA驱动程序API而不是CUDA运行时API?

  11. 11

    为什么我们应该使用类而不是记录,反之亦然?

  12. 12

    为什么我应该在Android中使用匿名类而不是类重新定义?

  13. 13

    为什么我不应该一直使用ICollection而不是IEnumerable?

  14. 14

    为什么我应该使用简单数组而不是容器类?

  15. 15

    为什么我应该使用DECLARE_DYNAMIC而不是DECLARE_DYNCREATE?

  16. 16

    我应该使用ViewModelProvider而不是ViewModelProviders吗?如果是这样,为什么?

  17. 17

    为什么我们应该使用接口而不是具体类型?

  18. 18

    为什么我们应该使用本地php gettext而不是gettexxt库

  19. 19

    为什么我应该使用float而不是display:table-cell?

  20. 20

    Java FX为什么我应该使用SimpleProperties而不是普通的nativ变量?

  21. 21

    为什么我应该使用$ cacheFactory而不是手动获取/设置数据?

  22. 22

    为什么我应该使用块作用域而不是函数作用域?

  23. 23

    为什么我应该在 Projectile Motion 中使用速度方程而不是位置方程

  24. 24

    为什么我应该使用Django表格

  25. 25

    为什么我应该使用JPanel?

  26. 26

    为什么我可以定义一个静态常量,该静态常量依赖于同一类型的另一个静态常量,而不是属性?

  27. 27

    为什么我们应该在jQuery中使用匿名函数而不是直接使用匿名函数?

  28. 28

    顶点属性-在顶点位置使用short而不是float

  29. 29

    为什么我的for循环使用“ &&”而不是“,”

热门标签

归档