public DescriptorSet(DescriptorSetLayout resLayout) { resLayout.Build(); descriptorPool = Graphics.DescriptorPoolManager.GetPool(ref resLayout.descriptorResourceCounts, Swapchain.IMAGE_COUNT); resourceLayout = resLayout; unsafe { var setLayouts = stackalloc VkDescriptorSetLayout[3] { resLayout.Handle, resLayout.Handle, resLayout.Handle }; var descriptorSetAllocateInfo = new VkDescriptorSetAllocateInfo { sType = VkStructureType.DescriptorSetAllocateInfo, descriptorPool = descriptorPool, pSetLayouts = setLayouts, descriptorSetCount = Swapchain.IMAGE_COUNT }; Device.AllocateDescriptorSets(ref descriptorSetAllocateInfo, (VkDescriptorSet *)descriptorSet.Data); } bindedRes = new IBindableResource[resLayout.NumBindings]; for (int i = 0; i < Swapchain.IMAGE_COUNT; i++) { writeDescriptorSets[i] = new VkWriteDescriptorSet[resLayout.NumBindings]; } }
public DescriptorSet(DescriptorSetLayout resLayout, params IBindableResource[] bindables) { resLayout.Build(); descriptorPool = Graphics.DescriptorPoolManager.GetPool(ref resLayout.descriptorResourceCounts, Swapchain.IMAGE_COUNT); resourceLayout = resLayout; unsafe { var setLayouts = stackalloc VkDescriptorSetLayout[3] { resLayout.Handle, resLayout.Handle, resLayout.Handle }; var descriptorSetAllocateInfo = new VkDescriptorSetAllocateInfo { sType = VkStructureType.DescriptorSetAllocateInfo, descriptorPool = descriptorPool, pSetLayouts = setLayouts, descriptorSetCount = Swapchain.IMAGE_COUNT }; Device.AllocateDescriptorSets(ref descriptorSetAllocateInfo, (VkDescriptorSet *)descriptorSet.Data); } bindedRes = new IBindableResource[resLayout.NumBindings]; System.Diagnostics.Debug.Assert(bindables.Length == resLayout.NumBindings); for (int i = 0; i < Swapchain.IMAGE_COUNT; i++) { writeDescriptorSets[i] = new VkWriteDescriptorSet[resLayout.NumBindings]; } for (uint i = 0; i < resLayout.NumBindings; i++) { BindResource(i, bindables[i]); } UpdateSets(); }
public static void vkUpdateDescriptorSets(VkDevice device, VkWriteDescriptorSet writeDescriptorSet, VkCopyDescriptorSet copyDescriptorSet) { vkUpdateDescriptorSets(device, 1, &writeDescriptorSet, 1, ©DescriptorSet); }
public static void UpdateDescriptorSets(uint descriptorWriteCount, ref VkWriteDescriptorSet pDescriptorWrites, uint descriptorCopyCount, IntPtr pDescriptorCopies) { vkUpdateDescriptorSets(device, descriptorWriteCount, Utilities.AsPtr(ref pDescriptorWrites), descriptorCopyCount, (VkCopyDescriptorSet *)pDescriptorCopies); }
public static void vkUpdateDescriptorSets(VkDevice device, VkWriteDescriptorSet writeDescriptorSet) { vkUpdateDescriptorSets(device, 1, &writeDescriptorSet, 0, null); }