4

我有两个片段着色器(用 GLSL 编写),都带有一组采样器。其他绑定是相同的,但是,两者之间的数组大小不同:

layout (binding = 2) uniform sampler2D tex[2];

对比

layout (binding = 2) uniform sampler2D tex[4];

我可以创建一个VkDescriptorSetLayoutVkDescriptorSetLayoutBinding此参数匹配的:

VkDescriptorSetLayoutBinding parameter;
memset(&parameter, 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大于必要的(在第一个着色器数组的情况下)?额外分配的描述符是一个很大的性能和/或内存问题吗?

4

0 回答 0