eqemu

annotate src/mesh.h @ 4:3d3656360a82

rendering properly, added picking, almost done...
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 17 Jul 2014 08:51:17 +0300
parents f9274bebe55e
children 2656099aff12
rev   line source
nuclear@3 1 #ifndef MESH_H_
nuclear@3 2 #define MESH_H_
nuclear@3 3
nuclear@4 4 #include "bvol.h"
nuclear@4 5
nuclear@3 6 enum {
nuclear@3 7 MESH_ATTR_VERTEX,
nuclear@3 8 MESH_ATTR_NORMAL,
nuclear@3 9 MESH_ATTR_TEXCOORD,
nuclear@3 10
nuclear@3 11 NUM_MESH_ATTRIBS
nuclear@3 12 };
nuclear@3 13
nuclear@3 14 class Mesh {
nuclear@3 15 private:
nuclear@3 16 float *attr[NUM_MESH_ATTRIBS];
nuclear@3 17 int vcount;
nuclear@3 18 unsigned int vbo[NUM_MESH_ATTRIBS];
nuclear@3 19 int attr_size[NUM_MESH_ATTRIBS];
nuclear@3 20
nuclear@3 21 mutable unsigned int buf_valid; /* bitmask */
nuclear@3 22 void update_buffers() const;
nuclear@3 23
nuclear@4 24 mutable BSphere bsph;
nuclear@4 25 mutable bool bsph_valid;
nuclear@4 26 void calc_bsph() const;
nuclear@4 27
nuclear@3 28 public:
nuclear@3 29 Mesh();
nuclear@3 30 ~Mesh();
nuclear@3 31
nuclear@3 32 float *set_attrib(int aidx, int count, int elemsz, float *data = 0);
nuclear@3 33 float *get_attrib(int aidx);
nuclear@3 34 const float *get_attrib(int aidx) const;
nuclear@3 35
nuclear@3 36 void draw() const;
nuclear@4 37
nuclear@4 38 BSphere &get_bounds();
nuclear@4 39 const BSphere &get_bounds() const;
nuclear@3 40 };
nuclear@3 41
nuclear@3 42 #endif // MESH_H_