Mercurial > games > semicongine
diff semiconginev2/old/vulkan/framebuffer.nim @ 1218:56781cc0fc7c compiletime-tests
did: renamge main package
author | sam <sam@basx.dev> |
---|---|
date | Wed, 17 Jul 2024 21:01:37 +0700 |
parents | semicongine/old/vulkan/framebuffer.nim@a3eb305bcac2 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/semiconginev2/old/vulkan/framebuffer.nim Wed Jul 17 21:01:37 2024 +0700 @@ -0,0 +1,38 @@ +import ../core +import ./device +import ./image + + +type + Framebuffer* = object + device*: Device + vk*: VkFramebuffer + dimension*: Vec2u + +proc CreateFramebuffer*(device: Device, renderpass: VkRenderPass, attachments: openArray[ImageView], dimension: Vec2u): Framebuffer = + assert device.vk.Valid + assert renderpass.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, + 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