我有一个用 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
,即创建一个VkDescriptorSetLayoutBinding
for并为字段ubo
指定VK_SHADER_STAGE_VERTEX_BIT
和。VK_SHADER_STAGE_FRAGMENT_BIT
stageFlags
但为了做到这一点,我需要检测到各个调用产生的两个描述符绑定EnumerateDescriptorBindings
都引用同一个缓冲区。我怎样才能做到这一点?