我有两个片段着色器(用 GLSL 编写),都带有一组采样器。其他绑定是相同的,但是,两者之间的数组大小不同:
layout (binding = 2) uniform sampler2D tex[2];
对比
layout (binding = 2) uniform sampler2D tex[4];
我可以创建一个VkDescriptorSetLayout
与VkDescriptorSetLayoutBinding
此参数匹配的:
VkDescriptorSetLayoutBinding parameter;
memset(¶meter, 0, sizeof(VkDescriptorSetLayoutBinding));
parameter.binding = 2;
parameter.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
parameter.descriptorCount = 4;
parameter.stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT;
// go on to call vkCreateDescriptorSetLayout with this VkDescriptorSetBinding (and others)
创建的VkDescriptorSetLayout
将正确绑定到两个着色器。
两个问题:
未使用的描述符的唯一含义是任何VkDescriptorSet
大于必要的(在第一个着色器数组的情况下)?额外分配的描述符是一个很大的性能和/或内存问题吗?