Пример #1
0
        protected Framebuffer CreateFramebuffer(RenderPass renderPass, ImageData imageData)
        {
            var attachments = new[] { imageData.View };
            var createInfo  = new FramebufferCreateInfo(renderPass, attachments, imageData.Width, imageData.Height, 1);

            return(device.CreateFramebuffer(createInfo));
        }
Пример #2
0
        void CreateFramebuffers()
        {
            var swap_chain_images = GetSwapChain.Images;

            Vulkan.Framebuffers = new Framebuffer[swap_chain_images.Length];

            for (int i = 0; i < swap_chain_images.Length; ++i)
            {
                ImageView view = swap_chain_images[i].View;

                var framebuffer_create_info = new FramebufferCreateInfo
                {
                    sType           = StructureType.FramebufferCreateInfo,           // VkStructureType                sType
                    pNext           = IntPtr.Zero,                                   // const void                    *pNext
                    flags           = 0,                                             // VkFramebufferCreateFlagBits       flags
                    renderPass      = Vulkan.RenderPass,                             // VkRenderPass                   renderPass
                    attachmentCount = 1,                                             // uint32_t                       attachmentCount
                    pAttachments    = &view,                                         // const VkImageView             *pAttachments
                    width           = 300,                                           // uint32_t                       width
                    height          = 300,                                           // uint32_t                       height
                    layers          = 1                                              // uint32_t                       layers
                };

                vk.CreateFramebuffer(GetDevice, ref framebuffer_create_info, (AllocationCallbacks *)0, out Vulkan.Framebuffers[i]).CheckError();
            }
        }
Пример #3
0
        Framebuffer CreateFramebuffer(RenderPass renderPass, ImageData imageData)
        {
            // Render passes operate in conjunction with framebuffers, which represent a collection
            // of specific memory attachments that a render pass instance uses.

            var attachments = new[] { imageData.View };
            var createInfo  = new FramebufferCreateInfo(renderPass, attachments, imageData.Width, imageData.Height, 1);

            return(device.CreateFramebuffer(createInfo));
        }
Пример #4
0
        public void CreateFramebuffer()
        {
            var renderPassCreateInfo = new RenderPassCreateInfo(
                new[] { new SubpassDescription() }
                );

            using (RenderPass renderPass = Device.CreateRenderPass(renderPassCreateInfo))
            {
                var framebufferCreateInfo = new FramebufferCreateInfo(null, 2, 2);
                using (renderPass.CreateFramebuffer(framebufferCreateInfo)) { }
                using (renderPass.CreateFramebuffer(framebufferCreateInfo, CustomAllocator)) { }
            }
        }
Пример #5
0
        private Framebuffer[] CreateFramebuffers(Image[] images, SurfaceFormatKhr surfaceFormat)
        {
            var displayViews = new ImageView[images.Length];

            for (var i = 0; i < images.Length; i++)
            {
                var viewCreateInfo = new ImageViewCreateInfo
                {
                    Image      = images[i],
                    ViewType   = ImageViewType.View2D,
                    Format     = surfaceFormat.Format,
                    Components = new ComponentMapping
                    {
                        R = ComponentSwizzle.R,
                        G = ComponentSwizzle.G,
                        B = ComponentSwizzle.B,
                        A = ComponentSwizzle.A
                    },
                    SubresourceRange = new ImageSubresourceRange
                    {
                        AspectMask = ImageAspectFlags.Color,
                        LevelCount = 1,
                        LayerCount = 1
                    }
                };

                displayViews[i] = _device.CreateImageView(viewCreateInfo);
            }

            var framebuffers = new Framebuffer [images.Length];

            for (var i = 0; i < images.Length; i++)
            {
                var frameBufferCreateInfo = new FramebufferCreateInfo
                {
                    Layers      = 1,
                    RenderPass  = _renderPass,
                    Attachments = new[] { displayViews[i] },
                    Width       = _surfaceCapabilities.CurrentExtent.Width,
                    Height      = _surfaceCapabilities.CurrentExtent.Height
                };

                framebuffers[i] = _device.CreateFramebuffer(frameBufferCreateInfo);
            }

            return(framebuffers);
        }
Пример #6
0
 private void CreateFramebuffers()
 {
     framebuffers = new Framebuffer[backBuffers.Length];
     for (int i = 0; i < backBuffers.Length; i++)
     {
         var attachment = backBufferViews[i];
         var createInfo = new FramebufferCreateInfo
         {
             StructureType   = StructureType.FramebufferCreateInfo,
             RenderPass      = renderPass,
             AttachmentCount = 1,
             Attachments     = new IntPtr(&attachment),
             Width           = (uint)form.ClientSize.Width,
             Height          = (uint)form.ClientSize.Height,
             Layers          = 1
         };
         framebuffers[i] = device.CreateFramebuffer(ref createInfo);
     }
 }
Пример #7
0
        protected void CreateFrameBuffers()
        {
            framebuffers = new Framebuffer[bufferSize];
            for (int i = 0; i < bufferSize; i++)
            {
                ImageView[] attachments = { imageViews[i] };

                var frameBufferInfo = new FramebufferCreateInfo
                {
                    RenderPass      = renderPass,
                    AttachmentCount = 1,
                    Attachments     = attachments,
                    Width           = extent.Width,
                    Height          = extent.Height,
                    Layers          = 1
                };

                framebuffers[i] = device.CreateFramebuffer(frameBufferInfo);
            }
        }
        private void CreateFrameBuffers()
        {
            vkSwapChainFramebuffers = new Framebuffer[vkSwapChainImageViews.Length];

            for (int i = 0; i < vkSwapChainImageViews.Length; i++)
            {
                var attachments = new ImageView[] { vkSwapChainImageViews[i] };

                var frameBufferInfo = new FramebufferCreateInfo()
                {
                    RenderPass      = vkRenderPass,
                    AttachmentCount = 1,
                    Attachments     = attachments,
                    Width           = vkSwapChainExtent.Width,
                    Height          = vkSwapChainExtent.Height,
                    Layers          = 1,
                };

                vkSwapChainFramebuffers[i] = vkDevice.CreateFramebuffer(frameBufferInfo);
            }
        }
Пример #9
0
        public unsafe Auto <DisposableFramebuffer> Create(Vk api, CommandBufferScoped cbs, Auto <DisposableRenderPass> renderPass)
        {
            ImageView *attachments = stackalloc ImageView[_attachments.Length];

            for (int i = 0; i < _attachments.Length; i++)
            {
                attachments[i] = _attachments[i].Get(cbs).Value;
            }

            var framebufferCreateInfo = new FramebufferCreateInfo()
            {
                SType           = StructureType.FramebufferCreateInfo,
                RenderPass      = renderPass.Get(cbs).Value,
                AttachmentCount = (uint)_attachments.Length,
                PAttachments    = attachments,
                Width           = Width,
                Height          = Height,
                Layers          = Layers
            };

            api.CreateFramebuffer(_device, framebufferCreateInfo, null, out var framebuffer).ThrowOnError();
            return(new Auto <DisposableFramebuffer>(new DisposableFramebuffer(api, _device, framebuffer), null, _attachments));
        }
Пример #10
0
        public unsafe Framebuffer(Api api, SwapChain swapChain, DepthBuffer depthBuffer, ImageView imageView, RenderPass renderPass)
        {
            (_api, _imageView, _renderPass) = (api, imageView, renderPass);

            var attachments = new Silk.NET.Vulkan.ImageView[]
            {
                imageView.VkImageView,
                depthBuffer.ImageView.VkImageView
            };

            fixed(Silk.NET.Vulkan.ImageView *attachmentsPtr = &attachments[0])
            {
                var framebufferInfo = new FramebufferCreateInfo();

                framebufferInfo.SType           = StructureType.FramebufferCreateInfo;
                framebufferInfo.RenderPass      = renderPass.VkRenderPass;
                framebufferInfo.AttachmentCount = (uint)attachments.Length;
                framebufferInfo.PAttachments    = attachmentsPtr;
                framebufferInfo.Width           = swapChain.Extent.Width;
                framebufferInfo.Height          = swapChain.Extent.Height;
                framebufferInfo.Layers          = 1;

                Util.Verify(_api.Vk.CreateFramebuffer(
                                _api.Vk.CurrentDevice.Value, framebufferInfo, default, out _vkFramebuffer), $"{nameof(Framebuffer)}: Failed to create framebuffer");
Пример #11
0
 private void CreateFramebuffers()
 {
     framebuffers = new Framebuffer[backBuffers.Length];
     for (int i = 0; i < backBuffers.Length; i++)
     {
         var attachment = backBufferViews[i];
         var createInfo = new FramebufferCreateInfo
         {
             StructureType = StructureType.FramebufferCreateInfo,
             RenderPass = renderPass,
             AttachmentCount = 1,
             Attachments = new IntPtr(&attachment),
             Width = (uint)form.ClientSize.Width,
             Height = (uint)form.ClientSize.Height,
             Layers = 1
         };
         framebuffers[i] = device.CreateFramebuffer(ref createInfo);
     }
 }
Пример #12
0
 internal static unsafe extern Result vkCreateFramebuffer(Device device, FramebufferCreateInfo* createInfo, AllocationCallbacks* allocator, Framebuffer* framebuffer);
Пример #13
0
 public unsafe Framebuffer CreateFramebuffer(ref FramebufferCreateInfo createInfo, AllocationCallbacks* allocator = null)
 {
     Framebuffer framebuffer;
     fixed (FramebufferCreateInfo* __createInfo__ = &createInfo)
     {
         vkCreateFramebuffer(this, __createInfo__, allocator, &framebuffer).CheckError();
     }
     return framebuffer;
 }