2017-06-15 68 views
1

是否有必要绑定制服,变化或属性必须在vulkan中连续? 假设我们有vulkan绑定必须在着色器中是连续的

layout (std140, set = 0, binding = 0) uniform ubo1 {} 
layout (std140, set = 0, binding = 3) uniform ubo2 {} 

是否允许?相同的属性绑定。

回答

0

不,他们不必紧紧包装。在描述符布局描述(13.2.1)中,规范说:

未指定的绑定的descriptorCount和stageFlags为零,并且descriptorType被视为未定义。但是,即使不使用所有描述符绑定,但VkDescriptorSetLayoutCreateInfo :: pBindings数组中的0和最大绑定数之间的所有绑定数都可能占用描述符集布局中的内存,尽管它不应消耗描述符池中的额外内存。

注意:指定的最大绑定数应尽可能小,以避免浪费内存。

1

是的,这是在着色器代码中允许的。不太确定实现。

您可以查看VkDescriptorSetLayoutCreateInfo的文档,以了解定义描述符集布局涉及的内容。您会注意到VkDescriptorSetLayoutBinding允许在任意索引处指定绑定。

作为一个个人喜好的问题(而且我没有在这个问题上找到明确的措词),我根本不相信实现来直观地处理这个问题。所以,我创建了空的绑定来“填补空白”。

+0

我必须清空绑定才能删除段错误。 – debonair

相关问题