代码之家  ›  专栏  ›  技术社区  ›  heeen

glVertexAttrib*:预定义了哪些属性索引?

  •  1
  • heeen  · 技术社区  · 16 年前

    glVertexAttrib函数族允许向每个顶点添加通用属性。 我怎样才能知道,哪一个将是第一个用于自定义属性的真正免费索引?

    3 回复  |  直到 16 年前
        1
  •  7
  •   heeen    16 年前

    我发现一个网站列出了nvidia硬件的预定义索引:

    http://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/attributes.php

    不幸的是,有一些 尝试消除的别名 维护所必需的 与现有OpenGL的兼容性 依靠NVIDIAs GLSL实现 因此不允许内置 要与顶点碰撞的顶点属性 通用顶点属性,即 属性索引 glBindAttribLocation。比如你 顶点属性)并使用 GLBindAttributeLocation以绑定泛型 名为“whatever”的顶点属性 gl_索引2的正常别名。”

    换句话说,NVidia硬件 索引保留为内置索引

    • gl_顶点0
    • gl_正常值2
    • gl_第二颜色4
    • 格卢福格德5号
    • 德国劳埃德大学
    • 德国劳埃德大学2 10
    • 德国劳埃德大学3 11
    • 总帐4 12
    • 德国劳埃德大学5 13
    • 德国劳埃德大学7 15
        2
  •  2
  •   jheriko    16 年前

    你不应该选择自己的指数。德国劳埃德船级社可以通过 glGetAttribLocation 通过在代码中使用属性名(如果在链接程序后执行此操作)执行函数。

    我从来没有遇到过这个问题。。。但不幸的是,我手头没有自己的着色器包装器代码(在atm工作时)来解释原因。

        3
  •  2
  •   Richard Viney    16 年前

    glVertexPointer() 完全合作。这将避免任何重复,并且很好地统一了。你仍然应该使用 glGetAttribLocation() 不过,因为AFAIK,您无法提前知道每个属性在运行时将映射到哪个索引。

    the extension spec 有所有血淋淋的细节。