You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.4 KiB
58 lines
1.4 KiB
#ifndef GEOMETRY_H
|
|
#define GEOMETRY_H
|
|
|
|
#include "../common/num_types.h"
|
|
#include "../common/linmath.h"
|
|
#include "bounding_volumes.h"
|
|
|
|
struct Entity;
|
|
|
|
enum Geometry_Draw_Mode
|
|
{
|
|
GDM_TRIANGLES = 0,
|
|
GDM_LINES,
|
|
GDM_POINTS,
|
|
GDM_NUM_DRAWMODES
|
|
};
|
|
|
|
struct Geometry
|
|
{
|
|
char* filename;
|
|
int draw_indexed;
|
|
uint vao;
|
|
uint vertex_vbo;
|
|
uint uv_vbo;
|
|
uint normal_vbo;
|
|
uint color_vbo;
|
|
uint index_vbo;
|
|
int ref_count;
|
|
vec3* vertices;
|
|
vec3* vertex_colors;
|
|
vec3* normals;
|
|
vec2* uvs;
|
|
uint* indices;
|
|
struct Bounding_Box bounding_box;
|
|
struct Bounding_Sphere bounding_sphere;
|
|
};
|
|
|
|
void geom_init(void);
|
|
int geom_create_from_file(const char* name);
|
|
int geom_find(const char* filename);
|
|
void geom_remove(int index);
|
|
void geom_cleanup(void);
|
|
void geom_render(int index, enum Geometry_Draw_Mode);
|
|
void geom_bounding_volume_generate(int index);
|
|
void geom_bounding_volume_generate_all(void);
|
|
struct Geometry* geom_get(int index);
|
|
int geom_render_in_frustum(int index,
|
|
vec4* frustum,
|
|
struct Entity* transform,
|
|
enum Geometry_Draw_Mode draw_mode);
|
|
int geom_create(const char* name,
|
|
vec3* vertices,
|
|
vec2* uvs,
|
|
vec3* normals,
|
|
uint* indices,
|
|
vec3* vertex_colors);
|
|
|
|
#endif
|
|
|