Mercurial > games > semicongine
comparison examples/hello_triangle.nim @ 19:b55d6ecde79d
did: introduce scene graph, meshs and generic vertex buffers
author | Sam <sam@basx.dev> |
---|---|
date | Mon, 09 Jan 2023 11:04:19 +0700 |
parents | 9e5fe647ff91 |
children | 316923e9247c |
comparison
equal
deleted
inserted
replaced
18:90e117952f74 | 19:b55d6ecde79d |
---|---|
1 import engine | 1 import zamikongine/engine |
2 import zamikongine/math/vector | |
3 import zamikongine/vertex | |
4 import zamikongine/mesh | |
5 import zamikongine/thing | |
6 import zamikongine/shader | |
2 | 7 |
8 type | |
9 VertexDataA = object | |
10 position11: VertexAttribute[Vec2[float32]] | |
11 color22: VertexAttribute[Vec3[float32]] | |
3 | 12 |
4 when isMainModule: | 13 when isMainModule: |
5 var myengine = igniteEngine() | 14 var myengine = igniteEngine() |
15 var mymesh1 = new Mesh[VertexDataA] | |
16 mymesh1.vertexData = VertexDataA( | |
17 position11: VertexAttribute[Vec2[float32]]( | |
18 data: @[ | |
19 Vec2([-0.5'f32, -0.5'f32]), | |
20 Vec2([ 0.5'f32, 0.5'f32]), | |
21 Vec2([-0.5'f32, 0.5'f32]), | |
22 ] | |
23 ), | |
24 color22: VertexAttribute[Vec3[float32]]( | |
25 data: @[ | |
26 Vec3([1.0'f32, 1.0'f32, 0.0'f32]), | |
27 Vec3([0.0'f32, 1.0'f32, 0.0'f32]), | |
28 Vec3([0.0'f32, 1.0'f32, 1.0'f32]), | |
29 ] | |
30 ) | |
31 ) | |
32 var mymesh2 = new IndexedMesh[VertexDataA, uint16] | |
33 mymesh2.vertexData = VertexDataA( | |
34 position11: VertexAttribute[Vec2[float32]]( | |
35 data: @[ | |
36 Vec2([ 0.0'f32, -0.7'f32]), | |
37 Vec2([ 0.6'f32, 0.1'f32]), | |
38 Vec2([ 0.3'f32, 0.4'f32]), | |
39 ] | |
40 ), | |
41 color22: VertexAttribute[Vec3[float32]]( | |
42 data: @[ | |
43 Vec3([1.0'f32, 1.0'f32, 0.0'f32]), | |
44 Vec3([1.0'f32, 0.0'f32, 0.0'f32]), | |
45 Vec3([0.0'f32, 1.0'f32, 1.0'f32]), | |
46 ] | |
47 ) | |
48 ) | |
49 mymesh2.indices = @[[0'u16, 1'u16, 2'u16]] | |
50 var athing = new Thing | |
51 athing.parts.add mymesh1 | |
52 var childthing = new Thing | |
53 childthing.parts.add mymesh2 | |
54 athing.children.add childthing | |
55 | |
56 setupPipeline[VertexDataA, uint16]( | |
57 myengine, | |
58 athing, | |
59 generateVertexShaderCode[VertexDataA]("main", "position11", "color22"), | |
60 generateFragmentShaderCode[VertexDataA]("main"), | |
61 ) | |
6 myengine.fullThrottle() | 62 myengine.fullThrottle() |
7 myengine.trash() | 63 myengine.trash() |