Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “VkDescriptorSetLayout”中未使用的绑定的含义?_C++_Performance_Vulkan - Fatal编程技术网

C++ “VkDescriptorSetLayout”中未使用的绑定的含义?

C++ “VkDescriptorSetLayout”中未使用的绑定的含义?,c++,performance,vulkan,C++,Performance,Vulkan,我有两个片段着色器(用GLSL编写),都带有一组采样器。其他绑定是相同的,但是,两个绑定之间的数组大小不同: layout (binding = 2) uniform sampler2D tex[2]; vs 我可以创建一个VkDescriptorSetLayoutBinding与此参数匹配的VkDescriptorSetLayoutBinding: VkDescriptorSetLayoutBinding parameter; memset(&parameter, 0, sizeof

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

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

我可以创建一个
VkDescriptorSetLayoutBinding
与此参数匹配的
VkDescriptorSetLayoutBinding

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
都将大于必要值(对于第一个着色器的数组)?
额外分配的描述符是性能和/或内存方面的大问题吗?

为了澄清,您想了解现有描述符与为每个管道提供单独布局的情况之间的潜在差异,是吗?因此,您的问题是,当您已经要更改管道和描述符集时,相对于具有更少管道特定布局所增加的内存,布局更改的成本。@Nicolas是的,没错。
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)