我有一个用 HLSL 编写的顶点和片段着色器,我使用DirectX Shader Compiler将其编译成 SPIR-V 二进制文件。
它们都使用一个 common cbuffer(我想将其视为uniform缓冲区)ubo。为了构造一个合适的VkDescriptorSetLayout,我想使用SPIRV-Reflect来获取关于ubo.
虽然,我可以从我的着色器的 SPIR-V 二进制文件的二进制文件中创建单独spv_reflect::ShaderModule的 'vertex_shader和',但我只能通过单独调用两者来fragment_shader检索有关现有描述符绑定的信息。EnumerateDescriptorBindings()spv_reflect::ShaderModule
它们都产生了 的存在ubo。但我想要做的是告诉 API 两个着色器使用相同的统一缓冲区ubo,即创建一个VkDescriptorSetLayoutBindingfor并为字段ubo指定VK_SHADER_STAGE_VERTEX_BIT和。VK_SHADER_STAGE_FRAGMENT_BITstageFlags
但为了做到这一点,我需要检测到各个调用产生的两个描述符绑定EnumerateDescriptorBindings都引用同一个缓冲区。我怎样才能做到这一点?