summaryrefslogtreecommitdiff
path: root/src/resources/include
diff options
context:
space:
mode:
author0scar <qgt268@alumni.ku.dk>2024-02-26 13:55:21 +0000
committer0scar <qgt268@alumni.ku.dk>2024-02-27 13:37:27 +0000
commit57a5158400a7e1ccccfd06af292e782d8eff2e4b (patch)
treee68264ce2c4b1ff2e7d9181749015554a1077180 /src/resources/include
parent2262a2d28fb4930ac21e1b40bfa51de090db6d90 (diff)
Add model asset type
Diffstat (limited to 'src/resources/include')
-rw-r--r--src/resources/include/engine/resources.h12
-rw-r--r--src/resources/include/engine/resources/model.h32
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