comparison tests/test_vulkan_wrapper.nim @ 99:4deffc94484a

add: vertex and (initial) shader types and methods
author Sam <sam@basx.dev>
date Tue, 14 Mar 2023 13:21:40 +0700
parents 335a65d3f892
children c782d7e52b25
comparison
equal deleted inserted replaced
98:335a65d3f892 99:4deffc94484a
1 import std/options 1 import std/options
2 2
3 import semicongine/vulkan 3 import semicongine/vulkan
4 import semicongine/platform/window 4 import semicongine/platform/window
5 import semicongine/math 5 import semicongine/math
6
7 type
8 Vertex = object
9 pos: Vec3
6 10
7 11
8 when isMainModule: 12 when isMainModule:
9 # print basic driver infos 13 # print basic driver infos
10 echo "Layers" 14 echo "Layers"
62 var framebuffers: seq[Framebuffer] 66 var framebuffers: seq[Framebuffer]
63 for imageview in swapchain.imageviews: 67 for imageview in swapchain.imageviews:
64 framebuffers.add device.createFramebuffer(renderpass, [imageview], swapchain.dimension) 68 framebuffers.add device.createFramebuffer(renderpass, [imageview], swapchain.dimension)
65 69
66 # todo: could be create inside "device", but it would be nice to have nim v2 with support for circular dependencies first 70 # todo: could be create inside "device", but it would be nice to have nim v2 with support for circular dependencies first
67 var commandPool = device.createCommandPool(family=device.firstGraphicsQueue().get().family, nBuffers=1) 71 var
72 commandPool = device.createCommandPool(family=device.firstGraphicsQueue().get().family, nBuffers=1)
73 imageAvailable = device.createSemaphore()
74 renderFinished = device.createSemaphore()
75 inflight = device.createFence()
76
77 var vertexshader = device.createVertexShader("#version 450\nvoid main() {}", Vertex())
78 var fragmentshader = device.createFragmentShader("#version 450\nvoid main() {}")
79 var pipeline = renderpass.createPipeline(vertexshader, fragmentshader)
68 80
69 echo "All successfull" 81 echo "All successfull"
70 echo "Start cleanup" 82 echo "Start cleanup"
71 83
84 # cleanup
85 pipeline.destroy()
86 vertexshader.destroy()
87 fragmentshader.destroy()
88 inflight.destroy()
89 imageAvailable.destroy()
90 renderFinished.destroy()
72 commandPool.destroy() 91 commandPool.destroy()
73 # cleanup
74 for fb in framebuffers.mitems: 92 for fb in framebuffers.mitems:
75 fb.destroy() 93 fb.destroy()
76 renderpass.destroy() 94 renderpass.destroy()
77 swapchain.destroy() 95 swapchain.destroy()
78 device.destroy() 96 device.destroy()