private void CreateFramebuffers() { if (_scFramebuffers != null) { for (int i = 0; i < _scFramebuffers.Length; i++) { _scFramebuffers[i]?.Dispose(); _scFramebuffers[i] = null; } Array.Clear(_scFramebuffers, 0, _scFramebuffers.Length); } Util.EnsureArrayMinimumSize(ref _scFramebuffers, (uint)_scImages.Length); Util.EnsureArrayMinimumSize(ref _scColorTextures, (uint)_scImages.Length); for (uint i = 0; i < _scImages.Length; i++) { VkTexture colorTex = new VkTexture( _gd, Math.Max(1, _scExtent.width), Math.Max(1, _scExtent.height), 1, 1, _scImageFormat, TextureUsage.RenderTarget, TextureSampleCount.Count1, _scImages[i]); FramebufferDescription desc = new FramebufferDescription(_depthAttachment?.Target, colorTex); VkFramebuffer fb = new VkFramebuffer(_gd, ref desc, true); _scFramebuffers[i] = fb; _scColorTextures[i] = new FramebufferAttachment[] { new FramebufferAttachment(colorTex, 0) }; } }
private void CreateFramebuffers() { if (_scFramebuffers != null) { for (int i = 0; i < _scFramebuffers.Length; i++) { _scFramebuffers[i]?.Dispose(); _scFramebuffers[i] = null; } Array.Clear(_scFramebuffers, 0, _scFramebuffers.Length); } EnsureSize(ref _scFramebuffers, _scImages.Length); EnsureSize(ref _scColorTextures, _scImages.Length); for (uint i = 0; i < _scImages.Length; i++) { VkTexture colorTex = new VkTexture(_gd, _scExtent.width, _scExtent.height, 1, 1, _scImageFormat, TextureUsage.RenderTarget, _scImages[i]); FramebufferDescription desc = new FramebufferDescription(_depthTexture, colorTex); VkFramebuffer fb = (VkFramebuffer)_gd.ResourceFactory.CreateFramebuffer(ref desc); _scFramebuffers[i] = fb; _scColorTextures[i] = new VkTexture[] { colorTex }; } }