diff options
Diffstat (limited to 'src/resources/include/engine')
| -rw-r--r-- | src/resources/include/engine/resources.h | 12 | ||||
| -rw-r--r-- | src/resources/include/engine/resources/model.h | 32 |
2 files changed, 44 insertions, 0 deletions
diff --git a/src/resources/include/engine/resources.h b/src/resources/include/engine/resources.h index 707bbde..d967403 100644 --- a/src/resources/include/engine/resources.h +++ b/src/resources/include/engine/resources.h @@ -34,6 +34,7 @@ enum Asset { Asset_shader, Asset_shaderprog, Asset_texture, + Asset_model, }; typedef struct { @@ -69,6 +70,11 @@ typedef struct { i32 bpc; } Asset_TextureSpec; +typedef struct { + enum Asset type; + const char* path; +} Asset_ModelSpec; + typedef union { enum Asset type; Asset_AudioSpec audio; @@ -76,8 +82,11 @@ typedef union { Asset_ShaderSpec shader; Asset_ShaderProgramSpec shaderprog; Asset_TextureSpec texture; + Asset_ModelSpec model; } asset_t; +#include <engine/resources/model.h> + // The resource spec typedef struct { /* Assorted asset specification, makes reloading them easier. */ @@ -93,6 +102,9 @@ typedef struct { usize texture_len; Texture* texture; + + usize model_len; + Model* model; } Resources; #define TextureDefinition(_path, ...) unimplemented diff --git a/src/resources/include/engine/resources/model.h b/src/resources/include/engine/resources/model.h new file mode 100644 index 0000000..d22dc21 --- /dev/null +++ b/src/resources/include/engine/resources/model.h @@ -0,0 +1,32 @@ +#ifndef ENGINE_RESOURCES_MODEL_H +#define ENGINE_RESOURCES_MODEL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <engine/core/types.h> +#include <cglm/cglm.h> +#include <glad/gl.h> + +typedef enum { + Model_error, + Model_obj, +} ModelType; + +typedef struct { + ModelType format; + + GLuint m_uiVAO; + GLuint m_uiVBO; + GLuint m_uiIBO; + unsigned m_uiNumIndices; +} Model; + +#include <engine/resources.h> +Model load_model(const Asset_ModelSpec *restrict ms); + +#ifdef __cplusplus +} +#endif +#endif |
