prosperon/source/engine/3d/model.h

48 lines
967 B
C
Raw Normal View History

2021-11-30 21:29:18 -06:00
#ifndef MODEL_H
#define MODEL_H
2023-05-12 13:22:05 -05:00
#include "HandmadeMath.h"
#include "sokol/sokol_gfx.h"
2023-05-12 13:22:05 -05:00
extern HMM_Vec3 eye;
2022-11-19 17:13:57 -06:00
struct shader;
2021-11-30 21:29:18 -06:00
2023-11-03 08:31:06 -05:00
/* A single mesh */
struct mesh {
sg_bindings bind;
uint32_t face_count;
};
2023-11-03 08:31:06 -05:00
/* A collection of meshes which create a full figure */
2022-11-19 17:13:57 -06:00
struct model {
2023-05-12 13:22:05 -05:00
struct mesh *meshes;
2021-11-30 21:29:18 -06:00
};
2023-11-03 08:31:06 -05:00
/* A model with draw information */
struct drawmodel {
struct model *model;
HMM_Mat4 amodel;
int go;
};
2021-11-30 21:29:18 -06:00
/* Get the model at a path, or create and return if it doesn't exist */
2022-11-19 17:13:57 -06:00
struct model *GetExistingModel(const char *path);
2021-11-30 21:29:18 -06:00
/* Make a Model struct */
2022-11-19 17:13:57 -06:00
struct model *MakeModel(const char *path);
2021-11-30 21:29:18 -06:00
/* Load a model from memory into the GPU */
2022-11-19 17:13:57 -06:00
void loadmodel(struct model *model);
2021-11-30 21:29:18 -06:00
2023-05-12 13:22:05 -05:00
void model_init();
2023-11-03 08:31:06 -05:00
void draw_model(struct model *model, HMM_Mat4 amodel);
void draw_models(struct model *model, struct shader *shader);
2021-11-30 21:29:18 -06:00
2023-11-03 08:31:06 -05:00
struct drawmodel *make_drawmodel(int go);
void draw_drawmodel(struct drawmodel *dm);
void free_drawmodel(struct drawmodel *dm);
2021-11-30 21:29:18 -06:00
#endif