From bd57f345ed9dbed1d81683e48199626de2ea9044 Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Fri, 27 Jun 2025 10:18:39 -0700 Subject: Restructure project --- src/core/geometry.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/core/geometry.h (limited to 'src/core/geometry.h') diff --git a/src/core/geometry.h b/src/core/geometry.h new file mode 100644 index 0000000..c37a76f --- /dev/null +++ b/src/core/geometry.h @@ -0,0 +1,28 @@ +#pragma once + +#include + +#include "gl_util.h" + +#include + +/// A piece of renderable geometry. +/// +/// The Geometry does not own its buffers, since buffers are typically shared +/// to reduce the memory footprint and the number of draw calls. More generally, +/// the renderer assumes ownership of all rendering resources, which simplifies +/// their management. +typedef struct Geometry { + GLuint vao; + GLenum mode; + GeometryDesc desc; + size_t num_verts; // May differ from the initial value in the descriptor if + // the geometry is updated. + GfxCore* gfxcore; +} Geometry; + +/// Create new geometry. +bool gfx_init_geometry(Geometry*, GfxCore*, const GeometryDesc*); + +/// Destroy the geometry. +void gfx_del_geometry(Geometry*); -- cgit v1.2.3