Mercurial > games > semicongine
comparison tests/test_text.nim @ 1236:176383220123
add: first font-rendering test
| author | sam <sam@basx.dev> |
|---|---|
| date | Sat, 20 Jul 2024 17:45:44 +0700 |
| parents | |
| children | 97813ac43cfb |
comparison
equal
deleted
inserted
replaced
| 1235:c70fee6568f6 | 1236:176383220123 |
|---|---|
| 1 import std/os | |
| 2 import std/sequtils | |
| 3 import std/monotimes | |
| 4 import std/times | |
| 5 import std/options | |
| 6 import std/random | |
| 7 | |
| 8 import ../semiconginev2 | |
| 9 | |
| 10 proc test_01_static_label(time: float32, swapchain: var Swapchain) = | |
| 11 var renderdata = InitRenderData() | |
| 12 | |
| 13 # scale: float32 = 1, | |
| 14 # position: Vec3f = NewVec3f(), | |
| 15 # color: Vec4f = NewVec4f(0, 0, 0, 1), | |
| 16 | |
| 17 var pipeline = CreatePipeline[DefaultFontShader](renderPass = swapchain.renderPass) | |
| 18 | |
| 19 var font = LoadFont("Overhaul.ttf", lineHeightPixels = 160) | |
| 20 var label1 = InitTextbox( | |
| 21 renderdata, | |
| 22 pipeline.descriptorSetLayouts[0], | |
| 23 font, | |
| 24 "Hello semicongine!", | |
| 25 color = NewVec4f(1, 1, 1, 1), | |
| 26 scale = 0.0005, | |
| 27 ) | |
| 28 | |
| 29 var start = getMonoTime() | |
| 30 while ((getMonoTime() - start).inMilliseconds().int / 1000) < time: | |
| 31 label1.Refresh(swapchain.GetAspectRatio()) | |
| 32 WithNextFrame(swapchain, framebuffer, commandbuffer): | |
| 33 WithRenderPass(swapchain.renderPass, framebuffer, commandbuffer, swapchain.width, swapchain.height, NewVec4f(0, 0, 0, 0)): | |
| 34 WithPipeline(commandbuffer, pipeline): | |
| 35 Render(label1, commandbuffer, pipeline, swapchain.currentFiF) | |
| 36 | |
| 37 # cleanup | |
| 38 checkVkResult vkDeviceWaitIdle(vulkan.device) | |
| 39 DestroyPipeline(pipeline) | |
| 40 DestroyRenderData(renderdata) | |
| 41 | |
| 42 when isMainModule: | |
| 43 var time = 10'f32 | |
| 44 InitVulkan() | |
| 45 | |
| 46 var renderpass = CreateDirectPresentationRenderPass(depthBuffer = true) | |
| 47 var swapchain = InitSwapchain(renderpass = renderpass).get() | |
| 48 | |
| 49 # tests a simple triangle with minimalistic shader and vertex format | |
| 50 test_01_static_label(time, swapchain) | |
| 51 | |
| 52 checkVkResult vkDeviceWaitIdle(vulkan.device) | |
| 53 vkDestroyRenderPass(vulkan.device, renderpass.vk, nil) | |
| 54 DestroySwapchain(swapchain) | |
| 55 | |
| 56 DestroyVulkan() |
