是否有必要绑定制服,变化或属性必须在vulkan中连续? 假设我们有vulkan绑定必须在着色器中是连续的
layout (std140, set = 0, binding = 0) uniform ubo1 {}
layout (std140, set = 0, binding = 3) uniform ubo2 {}
是否允许?相同的属性绑定。
是否有必要绑定制服,变化或属性必须在vulkan中连续? 假设我们有vulkan绑定必须在着色器中是连续的
layout (std140, set = 0, binding = 0) uniform ubo1 {}
layout (std140, set = 0, binding = 3) uniform ubo2 {}
是否允许?相同的属性绑定。
不,他们不必紧紧包装。在描述符布局描述(13.2.1)中,规范说:
未指定的绑定的descriptorCount和stageFlags为零,并且descriptorType被视为未定义。但是,即使不使用所有描述符绑定,但VkDescriptorSetLayoutCreateInfo :: pBindings数组中的0和最大绑定数之间的所有绑定数都可能占用描述符集布局中的内存,尽管它不应消耗描述符池中的额外内存。
注意:指定的最大绑定数应尽可能小,以避免浪费内存。
是的,这是在着色器代码中允许的。不太确定实现。
您可以查看VkDescriptorSetLayoutCreateInfo
的文档,以了解定义描述符集布局涉及的内容。您会注意到VkDescriptorSetLayoutBinding
允许在任意索引处指定绑定。
作为一个个人喜好的问题(而且我没有在这个问题上找到明确的措词),我根本不相信实现来直观地处理这个问题。所以,我创建了空的绑定来“填补空白”。
我必须清空绑定才能删除段错误。 – debonair