【发布时间】:2020-01-04 17:18:18
【问题描述】:
我正在研究 OpenGL 统一缓冲区对象和着色器存储缓冲区。我认为这个问题对他们都适用,但让我们只关注 UBO。
教程好像在说“块索引”和“绑定点索引”是不同的东西,如果我在一个shader中有多个UBO,我需要指定绑定索引
layout(binding = 0) uniform first_buffer {...};
layout(binding = 1) uniform second_buffer {...};
我的印象是块索引是由链接器确定的,可以从glGetUniformBlockIndex 读取,但是绑定点索引必须在布局中使用任意不同的binding=N 进行硬编码,并且对应的@ 987654327@,我觉得它很脆弱,很讨厌。
块索引和绑定点有什么区别?
我可以在布局中省略binding=N 吗?那么glBindBufferBase 会发生什么?
SSBO 都一样吗?
【问题讨论】:
-
将块索引视为纹理采样器制服的位置索引,而绑定点在某种程度上类似于纹理单元。
标签: opengl glsl shader buffer-objects