Mercurial > games > semicongine
comparison tests/test_text.nim @ 1240:42eeb59f3a43
add: more tests, line and point rendering
| author | sam <sam@basx.dev> |
|---|---|
| date | Mon, 22 Jul 2024 12:42:35 +0700 |
| parents | 69489a678141 |
| children | a0ed1a918fda |
comparison
equal
deleted
inserted
replaced
| 1239:69489a678141 | 1240:42eeb59f3a43 |
|---|---|
| 1 import std/os | 1 import std/os |
| 2 import std/algorithm | |
| 2 import std/strutils | 3 import std/strutils |
| 3 import std/sequtils | 4 import std/sequtils |
| 4 import std/monotimes | 5 import std/monotimes |
| 5 import std/times | 6 import std/times |
| 6 import std/options | 7 import std/options |
| 158 checkVkResult vkDeviceWaitIdle(vulkan.device) | 159 checkVkResult vkDeviceWaitIdle(vulkan.device) |
| 159 DestroyPipeline(pipeline) | 160 DestroyPipeline(pipeline) |
| 160 DestroyRenderData(renderdata) | 161 DestroyRenderData(renderdata) |
| 161 | 162 |
| 162 proc test_04_lots_of_texts(time: float32) = | 163 proc test_04_lots_of_texts(time: float32) = |
| 163 discard # TODO | 164 var renderdata = InitRenderData() |
| 165 | |
| 166 var pipeline = CreatePipeline[DefaultFontShader](renderPass = vulkan.swapchain.renderPass) | |
| 167 | |
| 168 var font = LoadFont("DejaVuSans.ttf", lineHeightPixels = 160) | |
| 169 var labels: seq[Textbox] | |
| 170 for i in 0 ..< 100: | |
| 171 labels.add InitTextbox( | |
| 172 renderdata, | |
| 173 pipeline.descriptorSetLayouts[0], | |
| 174 font, | |
| 175 $i, | |
| 176 color = NewVec4f(rand(0.5 .. 1.0), rand(0.5 .. 1.0), rand(0.5 .. 1.0), rand(0.5 .. 1.0)), | |
| 177 scale = rand(0.0002 .. 0.002), | |
| 178 position = NewVec3f(rand(-0.5 .. 0.5), rand(-0.5 .. 0.5), rand(-0.1 .. 0.1)) | |
| 179 ) | |
| 180 labels = labels.sortedByIt(-it.Position.z) | |
| 181 | |
| 182 var start = getMonoTime() | |
| 183 while ((getMonoTime() - start).inMilliseconds().int / 1000) < time: | |
| 184 for l in labels.mitems: | |
| 185 l.Refresh() | |
| 186 WithNextFrame(framebuffer, commandbuffer): | |
| 187 WithRenderPass(vulkan.swapchain.renderPass, framebuffer, commandbuffer, vulkan.swapchain.width, vulkan.swapchain.height, NewVec4f(0, 0, 0, 0)): | |
| 188 WithPipeline(commandbuffer, pipeline): | |
| 189 for l in labels: | |
| 190 Render(l, commandbuffer, pipeline) | |
| 191 | |
| 192 # cleanup | |
| 193 checkVkResult vkDeviceWaitIdle(vulkan.device) | |
| 194 DestroyPipeline(pipeline) | |
| 195 DestroyRenderData(renderdata) | |
| 164 | 196 |
| 165 when isMainModule: | 197 when isMainModule: |
| 166 var time = 10'f32 | 198 var time = 1000'f32 |
| 167 InitVulkan() | 199 InitVulkan() |
| 168 | 200 |
| 169 var renderpass = CreateDirectPresentationRenderPass(depthBuffer = true) | 201 var renderpass = CreateDirectPresentationRenderPass(depthBuffer = true) |
| 170 SetupSwapchain(renderpass = renderpass) | 202 SetupSwapchain(renderpass = renderpass) |
| 171 | 203 |
| 172 # tests a simple triangle with minimalistic shader and vertex format | 204 # tests a simple triangle with minimalistic shader and vertex format |
| 173 # test_01_static_label(time, swapchain) | 205 # test_01_static_label(time, swapchain) |
| 174 # test_02_multiple_animated(time) | 206 # test_02_multiple_animated(time) |
| 175 test_03_layouting(time) | 207 # test_03_layouting(time) |
| 208 test_04_lots_of_texts(time) | |
| 176 | 209 |
| 177 | 210 |
| 178 checkVkResult vkDeviceWaitIdle(vulkan.device) | 211 checkVkResult vkDeviceWaitIdle(vulkan.device) |
| 179 vkDestroyRenderPass(vulkan.device, renderpass.vk, nil) | 212 vkDestroyRenderPass(vulkan.device, renderpass.vk, nil) |
| 180 | 213 |
