Exemplo n.º 1
0
 public void SetDescriptors(PipelineLayout layout, DescriptorSet set, DescriptorBindPoint bindPoint, uint set_binding)
 {
     if (locked)
     {
         unsafe
         {
             if (set != null && set.hndl != IntPtr.Zero)
             {
                 var dyn_cnt = set.Layout.Layouts.Count(a => a.Type == DescriptorType.UniformBufferDynamic);
                 var ptrs    = stackalloc IntPtr[] { set.hndl };
                 var dyn_off = stackalloc uint[dyn_cnt];  //NOTE Added for the 0th binding global uniform buffer
                 for (int i = 0; i < dyn_cnt; i++)
                 {
                     dyn_off[i] = 0;
                 }
                 vkCmdBindDescriptorSets(hndl, (VkPipelineBindPoint)bindPoint, layout.hndl, set_binding, 1, ptrs, (uint)dyn_cnt, dyn_off);
                 IsEmpty = false;
             }
         }
     }
     else
     {
         throw new Exception("Command buffer not built.");
     }
 }
Exemplo n.º 2
0
 public void PushConstants(PipelineLayout layout, ShaderType stage, IntPtr constants, uint constantLen)
 {
     if (locked)
     {
         if (layout != null)
         {
             vkCmdPushConstants(hndl, layout.hndl, (VkShaderStageFlags)stage, 0, constantLen, constants);
             IsEmpty = false;
         }
     }
     else
     {
         throw new Exception("Command buffer not built.");
     }
 }