Mercurial > games > semicongine
view src/semicongine/vulkan/framebuffer.nim @ 110:3bbc94a83404
add: multiple pipelines per subpass
author | Sam <sam@basx.dev> |
---|---|
date | Thu, 30 Mar 2023 00:00:54 +0700 |
parents | 9c3e3dcb0328 |
children | 5871acc2977e |
line wrap: on
line source
import ./api import ./device import ./utils import ./image import ./renderpass import ../math type Framebuffer* = object device*: Device vk*: VkFramebuffer dimension*: Vec2I proc createFramebuffer*(device: Device, renderPass: RenderPass, attachments: openArray[ImageView], dimension: Vec2I): Framebuffer = assert device.vk.valid assert renderpass.vk.valid result.device = device result.dimension = dimension var theattachments: seq[VkImageView] for a in attachments: assert a.vk.valid theattachments.add a.vk var framebufferInfo = VkFramebufferCreateInfo( sType: VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, renderPass: renderPass.vk, attachmentCount: uint32(theattachments.len), pAttachments: theattachments.toCPointer, width: dimension[0], height: dimension[1], layers: 1, ) checkVkResult device.vk.vkCreateFramebuffer(addr(framebufferInfo), nil, addr(result.vk)) proc destroy*(framebuffer: var Framebuffer) = assert framebuffer.device.vk.valid assert framebuffer.vk.valid framebuffer.device.vk.vkDestroyFramebuffer(framebuffer.vk, nil) framebuffer.vk.reset