vulkan绑定必须在着色器中是连续的

时间:2017-06-15 23:36:27

标签: glsl vulkan

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

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

允许吗?属性绑定也一样。?

2 个答案:

答案 0 :(得分:1)

是的,着色器代码允许这样做。对实现不太确定。

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

作为个人偏好的问题(并且我没有找到任何关于此事的明确措辞),我根本不相信实现直观地处理这个问题。所以,我创建了空填充“填补空白”。

答案 1 :(得分:0)

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

  

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

     

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