Ejemplo n.º 1
0
        private static (GraphicsDevice gd, Swapchain sc) CreateDeviceAndSwapchain(
            Sdl2Window window,
            VRContext vrc,
            GraphicsBackend backend,
            GraphicsDeviceOptions gdo)
        {
            if (backend == GraphicsBackend.Vulkan)
            {
                (string[] instance, string[] device) = vrc.GetRequiredVulkanExtensions();

                var vdo = new VulkanDeviceOptions(instance, device);
                var gd  = GraphicsDevice.CreateVulkan(gdo, vdo);

                var swd = new SwapchainDescription(
                    VeldridStartup.GetSwapchainSource(window),
                    (uint)window.Width, (uint)window.Height,
                    gdo.SwapchainDepthFormat, gdo.SyncToVerticalBlank, true);
                var sc = gd.ResourceFactory.CreateSwapchain(swd);

                return(gd, sc);
            }
            else
            {
                var gd = VeldridStartup.CreateGraphicsDevice(window, gdo, backend);
                var sc = gd.MainSwapchain;
                return(gd, sc);
            }
        }