Mercurial > games > semicongine
comparison tests/test_vulkan_wrapper.nim @ 590:1edf3e16144e
add: input handling, small refactoring for renderer
| author | Sam <sam@basx.dev> |
|---|---|
| date | Tue, 18 Apr 2023 03:04:37 +0700 |
| parents | b434feaf2b67 |
| children | 11666d28e04d |
comparison
equal
deleted
inserted
replaced
| 589:b434feaf2b67 | 590:1edf3e16144e |
|---|---|
| 103 setInstanceData[Vec3f](r, "translate", @[newVec3f(0.5, -0.3)]) | 103 setInstanceData[Vec3f](r, "translate", @[newVec3f(0.5, -0.3)]) |
| 104 setInstanceData[Vec3f](t, "translate", @[newVec3f(0.3, 0.3)]) | 104 setInstanceData[Vec3f](t, "translate", @[newVec3f(0.3, 0.3)]) |
| 105 setInstanceData[Vec3f](c, "translate", @[newVec3f(-0.3, 0.1)]) | 105 setInstanceData[Vec3f](c, "translate", @[newVec3f(-0.3, 0.1)]) |
| 106 result = newEntity("root", t, r, c) | 106 result = newEntity("root", t, r, c) |
| 107 | 107 |
| 108 when isMainModule: | 108 proc main() = |
| 109 var engine = initEngine("Test") | 109 var engine = initEngine("Test") |
| 110 | 110 |
| 111 # INIT RENDERER: | 111 # INIT RENDERER: |
| 112 const | 112 const |
| 113 vertexInput = @[ | 113 vertexInput = @[ |
| 133 main="color = vec4(outcolor, 1);" | 133 main="color = vec4(outcolor, 1);" |
| 134 ) | 134 ) |
| 135 var | 135 var |
| 136 surfaceFormat = engine.gpuDevice.physicalDevice.getSurfaceFormats().filterSurfaceFormat() | 136 surfaceFormat = engine.gpuDevice.physicalDevice.getSurfaceFormats().filterSurfaceFormat() |
| 137 renderPass = engine.gpuDevice.simpleForwardRenderPass(surfaceFormat.format, vertexCode, fragmentCode, 2) | 137 renderPass = engine.gpuDevice.simpleForwardRenderPass(surfaceFormat.format, vertexCode, fragmentCode, 2) |
| 138 renderer = engine.gpuDevice.initRenderer([renderPass]) | 138 engine.setRenderer([renderPass]) |
| 139 | 139 |
| 140 # INIT SCENE | 140 # INIT SCENES |
| 141 | |
| 142 var scenes = [scene_simple(), scene_different_mesh_types(), scene_primitives()] | 141 var scenes = [scene_simple(), scene_different_mesh_types(), scene_primitives()] |
| 143 var time = initShaderGlobal("time", 0.0'f32) | 142 var time = initShaderGlobal("time", 0.0'f32) |
| 144 for scene in scenes.mitems: | 143 for scene in scenes.mitems: |
| 145 scene.components.add time | 144 scene.components.add time |
| 146 renderer.setupDrawableBuffers(scene, vertexInput) | 145 engine.addScene(scene, vertexInput) |
| 147 | 146 |
| 148 # MAINLOOP | 147 # MAINLOOP |
| 149 echo "Setup successfull, start rendering" | 148 echo "Setup successfull, start rendering" |
| 150 for i in 0 ..< 3: | 149 for i in 0 ..< 3: |
| 151 for scene in scenes: | 150 for scene in scenes: |
| 152 for i in 0 ..< 1000: | 151 for i in 0 ..< 1000: |
| 152 engine.updateInputs() | |
| 153 setValue[float32](time.value, get[float32](time.value) + 0.0005) | 153 setValue[float32](time.value, get[float32](time.value) + 0.0005) |
| 154 discard renderer.render(scene) | 154 if not engine.running or engine.keyIsDown(Escape): |
| 155 echo "Rendered ", renderer.framesRendered, " frames" | 155 engine.destroy() |
| 156 return | |
| 157 discard engine.renderScene(scene) | |
| 158 echo "Rendered ", engine.framesRendered, " frames" | |
| 159 echo "Processed ", engine.eventsProcessed, " events" | |
| 156 | 160 |
| 157 # cleanup | 161 # cleanup |
| 158 echo "Start cleanup" | 162 echo "Start cleanup" |
| 159 checkVkResult engine.gpuDevice.vk.vkDeviceWaitIdle() | |
| 160 renderer.destroy() | |
| 161 engine.destroy() | 163 engine.destroy() |
| 164 | |
| 165 when isMainModule: | |
| 166 main() |
