/// <summary> /// Begin renderpass and clear the color and depth of the supplied framebuffer. /// </summary> /// <param name="renderPass"></param> /// <param name="frameBuffer"></param> /// <param name="clearColor"></param> /// <param name="clearDepth"></param> public void BeginRenderPassClearColorDepth(RenderPass renderPass, FrameBuffer frameBuffer, VkClearColorValue clearColor, VkClearDepthStencilValue clearDepth, bool useSecondaryCommandBuffers) { CheckBegun(); CheckNotInRenderPass(); FixedArray2 <VkClearValue> clearValues = new FixedArray2 <VkClearValue>(); clearValues.First.color = clearColor; clearValues.Second.depthStencil = clearDepth; VkRenderPassBeginInfo renderPassBeginInfo = Initializers.renderPassBeginInfo(); renderPassBeginInfo.renderPass = renderPass.vkRenderPass; renderPassBeginInfo.renderArea.offset.x = 0; renderPassBeginInfo.renderArea.offset.y = 0; renderPassBeginInfo.renderArea.extent.width = frameBuffer.swapchain.width; renderPassBeginInfo.renderArea.extent.height = frameBuffer.swapchain.height; renderPassBeginInfo.clearValueCount = 2; renderPassBeginInfo.pClearValues = &clearValues.First; renderPassBeginInfo.framebuffer = frameBuffer.vkFrameBuffer; renderPassUseSecondaryBuffers = useSecondaryCommandBuffers; VkSubpassContents subPassContents = useSecondaryCommandBuffers ? VkSubpassContents.SecondaryCommandBuffers : VkSubpassContents.Inline; vkCmdBeginRenderPass(vkCmd, &renderPassBeginInfo, subPassContents); VkViewport viewport = Initializers.viewport((float)frameBuffer.swapchain.width, (float)frameBuffer.swapchain.height, 0.0f, 1.0f); vkCmdSetViewport(vkCmd, 0, 1, &viewport); VkRect2D scissor = Initializers.rect2D(frameBuffer.swapchain.width, frameBuffer.swapchain.height, 0, 0); vkCmdSetScissor(vkCmd, 0, 1, &scissor); inRenderPass = true; }