diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-08 07:21:29 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-08 07:21:29 +0100 |
| commit | e279537708fb511abf1d8f65325c145916a10918 (patch) | |
| tree | be0a6ed193b3369b3014c4aa605c5cf983c142ad /src/tests/test_mesh.cc | |
| parent | 438ed437022eca66e84401563b280dc137d2f3c9 (diff) | |
feat(3d): Implement Mesh Wireframe rendering for Visual Debug
Diffstat (limited to 'src/tests/test_mesh.cc')
| -rw-r--r-- | src/tests/test_mesh.cc | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/tests/test_mesh.cc b/src/tests/test_mesh.cc index 7f898c4..992471a 100644 --- a/src/tests/test_mesh.cc +++ b/src/tests/test_mesh.cc @@ -242,8 +242,16 @@ bool load_obj_and_create_buffers(const char* path, Object3D& out_obj) { g_mesh_gpu_data.vertex_buffer = gpu_create_buffer(g_device, final_vertices.size() * sizeof(MeshVertex), WGPUBufferUsage_Vertex | WGPUBufferUsage_CopyDst, final_vertices.data()).buffer; g_mesh_gpu_data.index_buffer = gpu_create_buffer(g_device, final_indices.size() * sizeof(uint32_t), WGPUBufferUsage_Index | WGPUBufferUsage_CopyDst, final_indices.data()).buffer; + struct MeshData { + std::vector<MeshVertex> vertices; + std::vector<uint32_t> indices; + }; + MeshData* mesh_data = new MeshData(); + mesh_data->vertices = final_vertices; + mesh_data->indices = final_indices; + out_obj.type = ObjectType::MESH; - out_obj.user_data = new std::vector<MeshVertex>(final_vertices); + out_obj.user_data = mesh_data; // This test doesn't use the asset system, so we override the renderer's internal cache lookup // by manually setting the buffers on the renderer object. This is a HACK for this specific tool. @@ -314,8 +322,14 @@ int main(int argc, char** argv) { #if !defined(STRIP_ALL) if (debug_mode) { - auto* vertices = (std::vector<MeshVertex>*)g_scene.objects[1].user_data; - g_renderer.GetVisualDebug().add_mesh_normals(g_scene.objects[1].get_model_matrix(), (uint32_t)vertices->size(), vertices->data()); + struct MeshData { + std::vector<MeshVertex> vertices; + std::vector<uint32_t> indices; + }; + auto* data = (MeshData*)g_scene.objects[1].user_data; + VisualDebug& dbg = g_renderer.GetVisualDebug(); + dbg.add_mesh_normals(g_scene.objects[1].get_model_matrix(), (uint32_t)data->vertices.size(), data->vertices.data()); + dbg.add_mesh_wireframe(g_scene.objects[1].get_model_matrix(), (uint32_t)data->vertices.size(), data->vertices.data(), (uint32_t)data->indices.size(), data->indices.data(), vec3(0.0f, 1.0f, 1.0f)); } #endif /* !defined(STRIP_ALL) */ @@ -334,7 +348,11 @@ int main(int argc, char** argv) { Renderer3D::SetDebugEnabled(false); // Reset debug mode #endif - delete (std::vector<MeshVertex>*)g_scene.objects[1].user_data; + struct MeshData { + std::vector<MeshVertex> vertices; + std::vector<uint32_t> indices; + }; + delete (MeshData*)g_scene.objects[1].user_data; wgpuBufferRelease(g_mesh_gpu_data.vertex_buffer); wgpuBufferRelease(g_mesh_gpu_data.index_buffer); |
