summaryrefslogtreecommitdiff
path: root/model.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'model.hpp')
-rw-r--r--model.hpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/model.hpp b/model.hpp
new file mode 100644
index 0000000..d4c4be3
--- /dev/null
+++ b/model.hpp
@@ -0,0 +1,39 @@
+#ifndef model_hpp
+#define model_hpp
+
+#include "asset.hpp"
+#include "video.hpp"
+
+struct Mesh {
+ int offset, vbo_offset, count;
+ int parent;
+ Shader_Id shader;
+};
+
+struct Model : public Asset {
+ Buffer_Id vbo;
+ Buffer_Id ibo;
+ int mesh_count;
+
+ Mesh* get_meshes() {
+ return (Mesh*)&this[1];
+ }
+
+ void destroy(Device* dev);
+ void render(
+ Device* dev,
+ Arena* a,
+ Render_Pass& pass,
+ Buffer_Id config
+ );
+};
+
+struct Model_Loader : public Asset_Loader {
+ Device* dev;
+ Asset_Arena* shaders;
+ void init(Device* device, Asset_Arena* shader_arena);
+ Asset* load(Arena* a, Arena* s, Pack_File* f) override;
+ void unload(Asset* a);
+};
+
+#endif