public unsafe SurfaceKHR CreateSurface(VulkanInstance instance) { if (OperatingSystem.IsWindows()) { if (instance.Api.TryGetInstanceExtension(new Instance(instance.Handle), out KhrWin32Surface surfaceExtension)) { var createInfo = new Win32SurfaceCreateInfoKHR() { Hinstance = 0, Hwnd = Handle, SType = StructureType.Win32SurfaceCreateInfoKhr }; surfaceExtension.CreateWin32Surface(new Instance(instance.Handle), createInfo, null, out var surface).ThrowOnError(); return(surface); } } else if (OperatingSystem.IsLinux()) { if (instance.Api.TryGetInstanceExtension(new Instance(instance.Handle), out KhrXlibSurface surfaceExtension)) { var createInfo = new XlibSurfaceCreateInfoKHR() { SType = StructureType.XlibSurfaceCreateInfoKhr, Dpy = (nint *)Display, Window = Handle }; surfaceExtension.CreateXlibSurface(new Instance(instance.Handle), createInfo, null, out var surface).ThrowOnError(); return(surface); } } throw new PlatformNotSupportedException("The current platform does not support surface creation."); }
public abstract Result CreateXlibSurface([Count(Count = 0)] Instance instance, [Count(Count = 0), Flow(FlowDirection.In)] ref XlibSurfaceCreateInfoKHR pCreateInfo, [Count(Count = 0), Flow(FlowDirection.In)] ref AllocationCallbacks pAllocator, [Count(Count = 0), Flow(FlowDirection.Out)] out SurfaceKHR pSurface);