renderable.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /**
  2. *** :: Renderable ::
  3. ***
  4. *** A model or mesh loaded into vertex buffers
  5. *** can be rigged or not depending on file type
  6. ***
  7. *** Load using .bmf format for best performance.
  8. ***
  9. **/
  10. #ifndef renderable_h
  11. #define renderable_h
  12. #include "cengine.h"
  13. #include "assets/material.h"
  14. typedef struct {
  15. int bone_ids[3];
  16. float bone_weights[3];
  17. } vertex_weight;
  18. typedef struct {
  19. GLuint vertex_vbo;
  20. GLuint triangle_vbo;
  21. int num_verticies;
  22. int num_triangles;
  23. sphere bound;
  24. } renderable_surface;
  25. renderable_surface* renderable_surface_new(mesh* m);
  26. renderable_surface* renderable_surface_new_rigged(mesh* m, vertex_weight* weights);
  27. void renderable_surface_delete(renderable_surface* surface);
  28. typedef struct {
  29. renderable_surface** surfaces;
  30. int num_surfaces;
  31. bool is_rigged;
  32. asset_hndl material;
  33. } renderable;
  34. renderable* renderable_new();
  35. void renderable_delete(renderable* r);
  36. void renderable_add_mesh(renderable* r, mesh* m);
  37. void renderable_add_model(renderable* r, model* m);
  38. void renderable_set_material(renderable* r, asset_hndl mat);
  39. model* renderable_to_model(renderable* r);
  40. renderable* bmf_load_file(char* filename);
  41. renderable* obj_load_file(char* filename);
  42. renderable* smd_load_file(char* filename);
  43. renderable* ply_load_file(char* filename);
  44. void bmf_save_file(renderable* r, char* filename);
  45. #endif