void buildCommandBuffers() { for (int i = 0; i < swapChain.ImageCount; ++i) { cmds[i]?.Free(); cmds[i] = cmdPool.AllocateAndStart(); vke.CommandBuffer cmd = cmds[i]; recordDraw(cmd, i); uiPipeline.RenderPass.Begin(cmd, uiFrameBuffers[i]); uiPipeline.Bind(cmd); cmd.BindDescriptorSet(uiPipeline.Layout, dsCrow); uiImage.SetLayout(cmd, VkImageAspectFlags.Color, VkImageLayout.ColorAttachmentOptimal, VkImageLayout.ShaderReadOnlyOptimal, VkPipelineStageFlags.ColorAttachmentOutput, VkPipelineStageFlags.FragmentShader); cmd.Draw(3, 1, 0, 0); uiImage.SetLayout(cmd, VkImageAspectFlags.Color, VkImageLayout.ShaderReadOnlyOptimal, VkImageLayout.ColorAttachmentOptimal, VkPipelineStageFlags.FragmentShader, VkPipelineStageFlags.BottomOfPipe); uiPipeline.RenderPass.End(cmd); cmds[i].End(); } }
protected virtual void recordDraw(vke.CommandBuffer cmd, int imageIndex) { }