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