Exemplo n.º 1
0
        /// <summary>
        /// Creates all framebuffers from the swapchain images.
        /// </summary>
        /// <param name="pass">Render pass.</param>
        public void CreateFrameBuffers(VKRenderPass pass)
        {
            Framebuffer Create(ImageView imageView) =>
            RenderDevice.Handle.CreateFramebuffer(pass.Handle, new[] { imageView }, extent.Width, extent.Height, 1);

            videoBuffers = ImageViews.Select(Create).ToArray();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Makes a new instance of <see cref="VKRenderer"/> class,
        /// this class manage Vulkan assets rendering.
        /// </summary>
        public VKRenderer(ISurface videoSurface) : base(videoSurface)
        {
            // - Creates vulkan library instance
            base.Library = new VulkanLibrary();

            // - Creates the vulkan physical device
            base.PhysicalDevice = new VKPhysicalDevice(Library);

            // - Creates the vulkan graphical device
            base.GraphicDevice = new VKGraphicDevice(PhysicalDevice);

            // - Istantiate modules
            ShaderManager = new VKShaderManager(GraphicDevice);

            // - Initialize the vertex manager
            base.VertexManager = new VKVertexBuffer(GraphicDevice, 100, true, 0.2);

            // - Initialize the index manager
            base.IndexManager = new VKIndexBuffer(GraphicDevice, 100, true, 0.2);

            // - Initialize the geometry dispatcher
            base.GeometryDispatcher = new VKGeometryDispatcher(VertexManager, IndexManager);

            // - Create a new swapchain
            Swapchain = new VKSwapChain(PhysicalDevice, GraphicDevice);

            // - Create the default render pass
            DefaultRenderPass = new VKRenderPass(GraphicDevice);

            // - Create the default pipeline
            Pipeline = new VKPipeline(GraphicDevice, DefaultRenderPass, false);

            // - Number of frames processing at the same time allowed
            MaxFrameInFlight = 2;

            // - Rendering and syncronization
            Commands                 = new List <CommandPool>();
            CommandBuffers           = new List <CommandBuffer[]>();
            RenderFinishedSemaphores = new List <Semaphore>();
            ImageAvailableSemaphores = new List <Semaphore>();
            InFlightFences           = new List <Fence>();
            ImagesInFlight           = new List <Fence>();
        }