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() | 
