【问题标题】:What are the implications of a constant vertex attribute vs. a uniform in OpenGL ES 2OpenGL ES 2 中的常量顶点属性与统一的含义是什么
【发布时间】:2013-10-28 09:59:52
【问题描述】:

当为我的顶点着色器指定一个不会在每个顶点上变化的值时,我可以选择将其指定为统一或常量顶点属性(使用 glVertexAttrib1f 和朋友)。

我应该选择一个而不是另一个的原因是什么?简单来说,在任何给定的实现中,可用的顶点属性和制服数量有限,因此我需要明智地选择,还是对性能有影响?

我环顾四周,发现了一些讨论,但没有什么能具体回答我的担忧: - http://www.khronos.org/message_boards/showthread.php/7134-Difference-between-uniform-and-constant-vertex-attribute https://gamedev.stackexchange.com/questions/44024/what-is-the-difference-between-constant-vertex-attributes-and-uniforms

我绝不是 OpenGL 专家,所以如果我只是遗漏了一些基本的东西,我深表歉意。

【问题讨论】:

    标签: opengl-es opengl-es-2.0


    【解决方案1】:

    好吧,如果你传递一个顶点属性指针,顶点属性可以设置为每个顶点不同;只需更改将数据提供给特定通用属性位置的方式,您就可以即时在常量值和每个顶点的变化之间进行切换。

    Uniforms 永远不会因顶点而异,它们是更恒定的。一般来说,GLSL ES 保证您可以使用的顶点属性槽(8 个,每个最多 4 个组件)比统一组件(128 个向量,每个 4 个组件)要少得多 - 大多数实现都超过了这些要求,但趋势是相同的(更多统一比属性)。

    此外,制服是每个程序的状态。这些是可以从 GLSL 程序的任何阶段访问的常量。在 OpenGL ES 2.0 中,这意味着 Vertex / Fragment 着色器,但在桌面 GL 中,这意味着 Vertex、Fragment、Geometry、Tessellation Control、Tessellation Evaluation。

    【讨论】:

      猜你喜欢
      • 2015-12-07
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 2014-02-20
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多