internal void Build() { GraphicsCommandPool?.Reset(); ComputeCommandPool?.Reset(); ImageAvailableSemaphore?.Dispose(); RenderingFinishedSemaphore?.Dispose(); Swapchain?.Dispose(); ImageAvailableSemaphore = ToDispose(Device.CreateSemaphore()); RenderingFinishedSemaphore = ToDispose(Device.CreateSemaphore()); Swapchain = ToDispose(VKHelper.CreateSwapchain(this)); CacheSwapchainImages(); }
private void CreateRenderCommands(RenderScene scene) { scene.CreateResources(swapchainSize, swapchainTextures); //Reset the pool (to release any previously created buffers) commandPool.Reset(CommandPoolResetFlags.ReleaseResources); //Allocate new command buffers commandbuffers = commandPool.AllocateBuffers(new CommandBufferAllocateInfo( level: CommandBufferLevel.Primary, count: swapchainTextures.Length )); //Record the primary command-buffers for (int i = 0; i < commandbuffers.Length; i++) { commandbuffers[i].Begin(new CommandBufferBeginInfo(flags: CommandBufferUsages.None)); scene.Record(commandbuffers[i], i); commandbuffers[i].End(); } logger?.Log(nameof(Window), $"Rendercommands recorded ({commandbuffers.Length} command-buffers)"); }
public void Reset() { CommandPool.Reset(); CommandBuffer.Reset(); }