Split obj loading and model rendering code

This commit is contained in:
2024-08-18 17:04:41 +01:00
parent 2e39780272
commit be7b577a0e
8 changed files with 152 additions and 157 deletions

41
src/model/obj.h Normal file
View File

@@ -0,0 +1,41 @@
#ifndef OBJ_H
#define OBJ_H
#include "aliases.h"
#include "img.h"
#include "mem_arena.h"
#include "typed_list.h"
#include "vec.h"
#define INVALID_MODEL ((Model){0})
#define IS_INVALID_MODEL(m) (m.vertices == NULL || m.triangles == NULL)
typedef struct triangle Triangle;
struct triangle {
u64 p0;
u64 p1;
u64 p2;
u64 n0;
u64 n1;
u64 n2;
u64 tx0;
u64 tx1;
u64 tx2;
};
MAKE_LIST_TYPE(Triangle);
typedef struct model Model;
struct model {
LIST_TYPE(V3f) * vertices;
LIST_TYPE(V3f) * normals;
LIST_TYPE(V2f) * texture_coordinates;
LIST_TYPE(Triangle) * triangles;
Image *texture;
Image *normal;
};
Model load_obj_file(Arena *arena, const char *filename, const char *texture,
const char *normal_map);
#endif // OBJ_H