【问题标题】:What is the purpose of using glBindAttributeLocation in GLSL? [duplicate]在 GLSL 中使用 glBindAttributeLocation 的目的是什么? [复制]
【发布时间】:2011-01-17 16:14:23
【问题描述】:

可能重复:
Explicit vs Automatic attribute location binding for OpenGL shaders
Why should I use glBindAttribLocation?

我尝试在不绑定任何属性位置的情况下调用 glGetAttribLocation,它似乎有效。因此,如果我想即时访问,我总是可以在数组中缓存属性位置。那么使用 glBindAttribLocation 的目的是什么?

[OpenGL 2.0]

【问题讨论】:

标签: opengl glsl shader


【解决方案1】:

glBindAttribLocation 将索引“绑定”到属性名称。这允许您对不同着色器的相同属性使用相同的索引。例如:顶点坐标 = 0,纹理坐标 = 1,法线 = 2。这通过使着色器符合您的代码而不是相反(请求属性位置)来简化绘图代码。

在我的代码中,我为常见的顶点属性创建了一个枚举:

enum
{
    GRAPHICS_ATTRIB_VERTEX = 0,
    GRAPHICS_ATTRIB_NORMAL,
    GRAPHICS_ATTRIB_TEXTURE,
};

使用glBindAttribLocation绑定它们,然后我可以这样使用它们:

    glVertexAttribPointer(GRAPHICS_ATTRIB_VERTEX, ....);

这将适用于我所有的着色器,无需调用glGetAttribLocation

【讨论】:

    猜你喜欢
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 2018-04-29
    • 2021-09-28
    • 1970-01-01
    • 2011-08-15
    相关资源
    最近更新 更多