【发布时间】:2020-06-25 11:40:02
【问题描述】:
在我的着色器中,我喜欢使用这样的语法:
layout (location = 0) in vec3 aPos;
这样我就可以在glVertexAttribPointer 中使用索引0 等,节省glGetAttribLocation 调用的工作量。我想对uniform 值做同样的事情,但如果我这样做了
layout (location = 2) uniform float offset;
我的顶点着色器无法编译。有什么方法可以实现相同的行为而不使用glGetUniformLocation?
【问题讨论】:
-
您是否考虑过使用 UBO 代替普通制服?
-
我对它们还不是很熟悉,它们在这里有什么好处?
-
您可以使用
std140布局,您不必查询任何东西。您还可以通过更新频率更有效地对制服进行分组,您还可以为不同的着色器使用相同的 UBO,而不必为每个着色器单独更新制服
标签: c++ opengl glsl opengl-3 opengl-4