internal void SetNewSwapchain( VkSwapchainKHR deviceSwapchain, uint width, uint height, VkSurfaceFormatKHR surfaceFormat, VkExtent2D swapchainExtent) { _desiredWidth = width; _desiredHeight = height; // Get the images uint scImageCount = 0; VkResult result = vkGetSwapchainImagesKHR(_gd.Device, deviceSwapchain, ref scImageCount, null); CheckResult(result); if (_scImages == null) { _scImages = new VkImage[(int)scImageCount]; } result = vkGetSwapchainImagesKHR(_gd.Device, deviceSwapchain, ref scImageCount, out _scImages[0]); CheckResult(result); _scImageFormat = surfaceFormat.format; _scExtent = swapchainExtent; CreateDepthTexture(); CreateFramebuffers(); _outputDescription = OutputDescription.CreateFromFramebuffer(this); }
internal OpenGLSwapchainFramebuffer(uint width, uint height, PixelFormat colorFormat, PixelFormat?depthFormat) { _depthFormat = depthFormat; // This is wrong, but it's not really used. OutputAttachmentDescription?depthDesc = _depthFormat != null ? new OutputAttachmentDescription(_depthFormat.Value) : (OutputAttachmentDescription?)null; OutputDescription = new OutputDescription( depthDesc, new OutputAttachmentDescription(colorFormat)); _colorTexture = new OpenGLPlaceholderTexture( width, height, colorFormat, TextureUsage.RenderTarget, TextureSampleCount.Count1); _colorTargets = new[] { new FramebufferAttachment(_colorTexture, 0) }; if (_depthFormat != null) { _depthTexture = new OpenGLPlaceholderTexture( width, height, depthFormat.Value, TextureUsage.DepthStencil, TextureSampleCount.Count1); _depthTarget = new FramebufferAttachment(_depthTexture, 0); } OutputDescription = OutputDescription.CreateFromFramebuffer(this); }