- vk.CmdBindDescriptorSets(command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, self.shprog->layout_handle, 0, descriptor_set_handles.size(), descriptor_set_handles.data(), 0, 0);
+ {
+ vector<uint32_t> dynamic_offsets;
+ dynamic_offsets.reserve(self.uniform_blocks.size());
+ for(const PipelineState::BoundUniformBlock &u: self.uniform_blocks)
+ if(u.used && u.binding>=0)
+ {
+ if(u.buffer->get_usage()==STREAMING)
+ dynamic_offsets.push_back(frame*u.buffer->get_size());
+ else
+ dynamic_offsets.push_back(0);
+ }
+
+ vk.CmdBindDescriptorSets(command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, self.shprog->layout_handle,
+ 0, descriptor_set_handles.size(), descriptor_set_handles.data(), dynamic_offsets.size(), dynamic_offsets.data());
+ }