Mercurial > games > semicongine
comparison tests/test_font.nim @ 726:443791a202c8
add: font-test
author | Sam <sam@basx.dev> |
---|---|
date | Sat, 27 May 2023 13:45:03 +0700 |
parents | |
children | bfcb41211c5b |
comparison
equal
deleted
inserted
replaced
725:5c08c45b51b9 | 726:443791a202c8 |
---|---|
1 import semicongine | |
2 | |
3 proc main() = | |
4 var scene = newScene("main", root=newEntity("rect", rect())) | |
5 var font = loadFont("DejaVuSans.ttf", "myfont") | |
6 var img = loadImage("flag.png") | |
7 | |
8 var textbox = newTextbox(10, 10, font, "Joni") | |
9 scene.root.add textbox | |
10 | |
11 var sampler = DefaultSampler() | |
12 sampler.magnification = VK_FILTER_NEAREST | |
13 sampler.minification = VK_FILTER_NEAREST | |
14 scene.addTextures("my_texture", @[ | |
15 Texture(image: img, sampler: sampler) | |
16 ]) | |
17 scene.addShaderGlobalArray("test2", @[1'f32, 2'f32]) | |
18 | |
19 var engine = initEngine("Test fonts") | |
20 | |
21 const | |
22 vertexInput = @[ | |
23 attr[Vec3f]("position", memoryPerformanceHint=PreferFastRead), | |
24 attr[Vec2f]("uv", memoryPerformanceHint=PreferFastRead), | |
25 ] | |
26 vertexOutput = @[attr[Vec2f]("uvout")] | |
27 uniforms = @[attr[float32]("test2", arrayCount=2)] | |
28 samplers = @[attr[Sampler2DType]("my_texture", arrayCount=1)] | |
29 fragOutput = @[attr[Vec4f]("color")] | |
30 vertexCode = compileGlslShader( | |
31 stage=VK_SHADER_STAGE_VERTEX_BIT, | |
32 inputs=vertexInput, | |
33 uniforms=uniforms, | |
34 samplers=samplers, | |
35 outputs=vertexOutput, | |
36 main="""gl_Position = vec4(position, 1.0); uvout = uv;""" | |
37 ) | |
38 fragmentCode = compileGlslShader( | |
39 stage=VK_SHADER_STAGE_FRAGMENT_BIT, | |
40 inputs=vertexOutput, | |
41 uniforms=uniforms, | |
42 samplers=samplers, | |
43 outputs=fragOutput, | |
44 main="""color = texture(my_texture[0], uvout);""" | |
45 ) | |
46 engine.setRenderer(engine.gpuDevice.simpleForwardRenderPass(vertexCode, fragmentCode)) | |
47 engine.addScene(scene, vertexInput, samplers) | |
48 while engine.updateInputs() == Running and not engine.keyIsDown(Escape): | |
49 engine.renderScene(scene) | |
50 engine.destroy() | |
51 | |
52 | |
53 when isMainModule: | |
54 main() |