public void CmdBindDescriptorSets(MgPipelineBindPoint pipelineBindPoint, IMgPipelineLayout layout, UInt32 firstSet, UInt32 descriptorSetCount, IMgDescriptorSet[] pDescriptorSets, UInt32[] pDynamicOffsets) { var bLayout = (VkPipelineLayout)layout; Debug.Assert(bLayout != null); var stride = Marshal.SizeOf(typeof(IntPtr)); IntPtr sets = Marshal.AllocHGlobal((int)(stride * descriptorSetCount)); var src = new ulong[descriptorSetCount]; for (uint i = 0; i < descriptorSetCount; ++i) { var bDescSet = (VkDescriptorSet)pDescriptorSets[i]; Debug.Assert(bDescSet != null); src[i] = bDescSet.Handle; } Interops.vkCmdBindDescriptorSets(this.Handle, (VkPipelineBindPoint)pipelineBindPoint, bLayout.Handle, firstSet, descriptorSetCount, src, (uint)pDynamicOffsets.Length, pDynamicOffsets); }