Split obj loading and model rendering code
This commit is contained in:
41
src/model/obj.h
Normal file
41
src/model/obj.h
Normal 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
|
||||
Reference in New Issue
Block a user