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 */