commit da175b4
uint
·
2026-07-30 00:31:05 +0000 UTC
parent dab7136
draw separate brick dirt and stone blocks
1 files changed,
+51,
-11
+51,
-11
1@@ -7,18 +7,40 @@
2 #include "renderer/renderer.h"
3 #include "renderer/test_block.h"
4
5-static MGMesh block = MGMESH_INVALID;
6-static MGTexture block_texture = MGTEXTURE_INVALID;
7+typedef struct {
8+ MGMesh mesh;
9+ MGTexture texture;
10+} Block;
11+
12+static Block brick = { MGMESH_INVALID, MGTEXTURE_INVALID };
13+static Block dirt = { MGMESH_INVALID, MGTEXTURE_INVALID };
14+static Block stone = { MGMESH_INVALID, MGTEXTURE_INVALID };
15 static MGCamera cam;
16
17 void test_scene_create(void)
18 {
19- block = block_mesh_create();
20- if (block == MGMESH_INVALID)
21+ brick.mesh = block_mesh_create();
22+ if (brick.mesh == MGMESH_INVALID)
23+ mg_die(MG_ERR_MESH_CREATE, "Failed to create test block mesh");
24+
25+ brick.texture = renderer_texture_load("assets/resourcepacks/default/blocks/brick.png");
26+ if (brick.texture == MGTEXTURE_INVALID)
27+ mg_die(MG_ERR_TEXTURE_LOAD, "Failed to load test block texture");
28+
29+ dirt.mesh = block_mesh_create();
30+ if (dirt.mesh == MGMESH_INVALID)
31+ mg_die(MG_ERR_MESH_CREATE, "Failed to create test block mesh");
32+
33+ dirt.texture = renderer_texture_load("assets/resourcepacks/default/blocks/dirt.png");
34+ if (dirt.texture == MGTEXTURE_INVALID)
35+ mg_die(MG_ERR_TEXTURE_LOAD, "Failed to load test block texture");
36+
37+ stone.mesh = block_mesh_create();
38+ if (stone.mesh == MGMESH_INVALID)
39 mg_die(MG_ERR_MESH_CREATE, "Failed to create test block mesh");
40
41- block_texture = renderer_texture_load("assets/resourcepacks/default/blocks/brick.png");
42- if (block_texture == MGTEXTURE_INVALID)
43+ stone.texture = renderer_texture_load("assets/resourcepacks/default/blocks/stone.png");
44+ if (stone.texture == MGTEXTURE_INVALID)
45 mg_die(MG_ERR_TEXTURE_LOAD, "Failed to load test block texture");
46
47 camera_init(&cam, MG_V3(3.0f, 3.0f, 3.0f));
48@@ -45,18 +67,36 @@ void test_scene_draw(MGContext* ctx)
49
50 proj = camera_get_proj(&cam, aspect);
51 view = camera_get_view(&cam);
52- model = MG_M4D(1.0f);
53
54+ model = MG_Translate(MG_V3(0.0f, 0.0f, 0.0f));
55+ mvp = MG_MulM4(proj, MG_MulM4(view, model));
56+ renderer_mesh_draw(brick.mesh, brick.texture, &mvp);
57+
58+ model = MG_Translate(MG_V3(1.0f, 0.0f, 0.0f));
59 mvp = MG_MulM4(proj, MG_MulM4(view, model));
60+ renderer_mesh_draw(dirt.mesh, dirt.texture, &mvp);
61
62- renderer_mesh_draw(block, block_texture, &mvp);
63+ model = MG_Translate(MG_V3(2.0f, 0.0f, 0.0f));
64+ mvp = MG_MulM4(proj, MG_MulM4(view, model));
65+ renderer_mesh_draw(stone.mesh, stone.texture, &mvp);
66 }
67
68 void test_scene_destroy(void)
69 {
70- renderer_mesh_destroy(block);
71- renderer_texture_destroy(block_texture);
72- block = MGMESH_INVALID;
73+ renderer_mesh_destroy(brick.mesh);
74+ renderer_texture_destroy(brick.texture);
75+ brick.mesh = MGMESH_INVALID;
76+ brick.texture = MGTEXTURE_INVALID;
77+
78+ renderer_mesh_destroy(dirt.mesh);
79+ renderer_texture_destroy(dirt.texture);
80+ dirt.mesh = MGMESH_INVALID;
81+ dirt.texture = MGTEXTURE_INVALID;
82+
83+ renderer_mesh_destroy(stone.mesh);
84+ renderer_texture_destroy(stone.texture);
85+ stone.mesh = MGMESH_INVALID;
86+ stone.texture = MGTEXTURE_INVALID;
87 }
88
89 #endif /* TEST_SCENE_H */