comparison tests/test_vulkan_wrapper.nim @ 581:87e500bd528a

add: better mesh support, indexed mesh
author Sam <sam@basx.dev>
date Thu, 06 Apr 2023 00:30:48 +0700
parents 13febe7978e5
children dfaddaf96f09
comparison
equal deleted inserted replaced
580:3c4be9e13570 581:87e500bd528a
47 # create devices 47 # create devices
48 let selectedPhysicalDevice = instance.getPhysicalDevices().filterBestGraphics() 48 let selectedPhysicalDevice = instance.getPhysicalDevices().filterBestGraphics()
49 var device = instance.createDevice( 49 var device = instance.createDevice(
50 selectedPhysicalDevice, 50 selectedPhysicalDevice,
51 @[], 51 @[],
52 @[], 52 @["VK_EXT_index_type_uint8"],
53 selectedPhysicalDevice.filterForGraphicsPresentationQueues() 53 selectedPhysicalDevice.filterForGraphicsPresentationQueues()
54 ) 54 )
55 55
56 # INIT RENDERER: 56 # INIT RENDERER:
57 const 57 const
88 root: newEntity("root", 88 root: newEntity("root",
89 newEntity("triangle1", newMesh( 89 newEntity("triangle1", newMesh(
90 positions=[newVec3f(0.0, -0.5), newVec3f(0.5, 0.5), newVec3f(-0.5, 0.5)], 90 positions=[newVec3f(0.0, -0.5), newVec3f(0.5, 0.5), newVec3f(-0.5, 0.5)],
91 colors=[newVec3f(1.0, 0.0, 0.0), newVec3f(0.0, 1.0, 0.0), newVec3f(0.0, 0.0, 1.0)], 91 colors=[newVec3f(1.0, 0.0, 0.0), newVec3f(0.0, 1.0, 0.0), newVec3f(0.0, 0.0, 1.0)],
92 )), 92 )),
93 newEntity("triangle1b", newMesh(
94 positions=[newVec3f(0.0, -0.4), newVec3f(0.4, 0.4), newVec3f(-0.4, 0.5)],
95 colors=[newVec3f(1.0, 0.0, 0.0), newVec3f(0.0, 1.0, 0.0), newVec3f(0.0, 0.0, 1.0)],
96 )),
97 newEntity("triangle2a", newMesh(
98 positions=[newVec3f(0.0, 0.5), newVec3f(0.5, -0.5), newVec3f(-0.5, -0.5)],
99 colors=[newVec3f(1.0, 0.0, 0.0), newVec3f(0.0, 1.0, 0.0), newVec3f(0.0, 0.0, 1.0)],
100 indices=[[0'u16, 2'u16, 1'u16]]
101 )),
102 newEntity("triangle2b", newMesh(
103 positions=[newVec3f(0.0, 0.4), newVec3f(0.4, -0.4), newVec3f(-0.4, -0.4)],
104 colors=[newVec3f(1.0, 0.0, 0.0), newVec3f(0.0, 1.0, 0.0), newVec3f(0.0, 0.0, 1.0)],
105 indices=[[0'u16, 2'u16, 1'u16]]
106 )),
107 newEntity("triangle3a", newMesh(
108 positions=[newVec3f(0.4, 0.5), newVec3f(0.9, -0.3), newVec3f(0.0, -0.3)],
109 colors=[newVec3f(1.0, 1.0, 0.0), newVec3f(1.0, 1.0, 0.0), newVec3f(1.0, 1.0, 0.0)],
110 indices=[[0'u32, 2'u32, 1'u32]],
111 autoResize=false
112 )),
113 newEntity("triangle3b", newMesh(
114 positions=[newVec3f(0.4, 0.5), newVec3f(0.9, -0.3), newVec3f(0.0, -0.3)],
115 colors=[newVec3f(1.0, 1.0, 0.0), newVec3f(1.0, 1.0, 0.0), newVec3f(1.0, 1.0, 0.0)],
116 indices=[[0'u32, 2'u32, 1'u32]],
117 autoResize=false
118 )),
93 ) 119 )
94 ) 120 )
95 thescene.setupDrawables(renderPass) 121 thescene.setupDrawables(renderPass)
96 122
97 # MAINLOOP 123 # MAINLOOP
98 echo "Setup successfull, start rendering" 124 echo "Setup successfull, start rendering"
99 for i in 0 ..< 1000: 125 for i in 0 ..< 10000:
100 discard swapchain.drawScene(thescene) 126 discard swapchain.drawScene(thescene)
101 echo "Rendered ", swapchain.framesRendered, " frames" 127 echo "Rendered ", swapchain.framesRendered, " frames"
102 checkVkResult device.vk.vkDeviceWaitIdle() 128 checkVkResult device.vk.vkDeviceWaitIdle()
103 129
104 # cleanup 130 # cleanup