【问题标题】:Is it possible for a vertex attribute to be an array in GLSL-ES 2.0?顶点属性是否可以成为 GLSL-ES 2.0 中的数组?
【发布时间】:2011-11-22 00:30:13
【问题描述】:

在 GLSL-ES 中可以有数组。例如,GLSL ES Specification 给出了以下作为数组的统一变量的示例:

uniform vec4 lightPosition[4];

是否可以将顶点属性设置为数组?换句话说,根据规范,以下内容是否合法?

attribute vec4 foo[3];  // three vec4s per vertex

答案(是或否)是否在 GLSL ES 规范的任何地方明确提及? (我找不到它,但我还没有阅读规范的每一行。)

另外,如果它是合法的,如何使用 OpenGL ES 2.0 API 初始化这样一个属性? (假设使用glVertexAttribPointer,顶点/数组元素/向量元素的布局是什么?)

【问题讨论】:

    标签: glsl opengl-es-2.0


    【解决方案1】:

    GLSL ES 2.0 specification 声明属性不能声明为数组。

    在桌面 GL 中,您可以拥有属性数组。当属性被分配一个属性索引(glBindAttribLocation 或被链接的着色器自动)时,它将获得连续的属性,如果您使用了glBindAttribLocation,则从您请求的属性开始。因此,如果foo 的位置为 5,foo[0] 将为 5,foo[1] 为 6,foo[2] 为 7。

    如果有一些 ES 2.0 扩展允许属性数组,它可能会像这样工作。

    【讨论】:

    • 规范在哪里说不能声明为数组?
    • @LaurenceGonsalves:第 4.3.3 节,令人惊讶的是,“属性”。这是第一段的最后一句话。
    • @NicolBolas;在桌面上,在 1.5 版(GL 3.2)中使用数组属性是合法的,所以它在那里也是相当新的。
    猜你喜欢
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2017-08-11
    相关资源
    最近更新 更多