- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
9年前关闭。
Possible Duplicate:
Explicit vs Automatic attribute location binding for OpenGL shaders
glBindAttribLocation
并且不允许着色器编译器分配自己的索引。我想知道为什么这是推荐的做法,它有什么优点(或者说不使用它有什么缺点)?
最佳答案
首先,我不认为通过 glBindAttribLocation
使用显式绑定(bind)是一般建议。而不是 glGetAttribLocation
.话虽如此,这些是我停止使用 glGetAttribLocation
的主要原因。 :
首先,这可能会导致不必要的开销。您可以使用可读的名称而不是数字,这一切看起来都很好。 “属性 7 到底是什么”与“哦,对了,属性 texture_coordinate”:我将首先解释可能的开销是什么,然后解释为什么最后一部分甚至没有意义。
如果您经常需要属性位置,调用 glGetAttribLocation
的开销可能会变得不可忽略,具体取决于驱动程序。因此,要处理一般情况,您必须构建一个缓存系统。太好了,我的方法简单易读,用名称代替数字,我只需要编写很多重要的包装代码。更糟糕的是,当程序变得无效时,您真的应该注意销毁缓存,您很可能会做错并最终导致错误。所以我们从“好读的名字”变成了“可怕的马车困惑”。
更重要的是,“好读的名字”的论点是有缺陷的。对于着色器本身中定义的位置,您可以完美地执行以下操作:
const GLint vertex_loc_att = 0;
const GLint texture_coord_att = 1;
...
attribute_locations["vertex_location"] = 0;
attribute_locations["texture_coordinate"] = 1;
...
glBindAttribLocation
结合使用,只需在链接之前执行此操作:
foreach name, location in attribute_locations
{
glBindAttribLocation(program_id, location, name);
}
关于opengl - 为什么要使用 glBindAttribLocation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12051205/
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: Explicit vs Automatic attribute location binding for OpenG
我正在学习 OpenGL,并注意到在处理输入属性时我可以选择使用 glGetAttribLocation() 或 glBindAttribLocation(),但对于 uniform ,我有使用glG
我正在努力寻找不需要 glew 或 glut 或其他任何东西的 OpenGL/GLSL 示例。 我正在尝试仅使用 glfw3(如果可能的话我不想使用其他库)并且我正在努力理解一旦我使用 glBindA
我的理解是glBindAttribLocation允许您自定义设置属性的句柄(在链接着色器程序之前),您可以稍后在使用 glVertexAttribPointer 进行渲染时使用该句柄. 但是您不必使
这可能是一个菜鸟问题。据我了解,glBindAttribLocation(..., AAA, ...) 将程序内的属性绑定(bind)到 AAA 的位置 ID,只要 AAA 是唯一的。如果我有以下代码
在 iOS 设备上绑定(bind)属性是否明智(以及如何选择要绑定(bind)的索引号)?在我的应用程序中,我有几个着色器,跟踪所有属性/制服变得很麻烦。但我读过 nVidia imposes res
我使用的是 OpenGL 4.2,我不明白为什么我会在这个程序中收到 GL_INVALID_VALUE 错误。调用 glBindAttribLocation 时出现错误。根据OpenGL 4 refe
在我发布一些代码之前,我会解释一下:我现在正在 iPhone 平台上学习 OpenGL ES 2.0,我每次都要编译我的程序,但它只能在某些时候正确运行。这是一个 super 简单的程序,带有一个顶点
我是一名优秀的程序员,十分优秀!