*/
float *cmesh_set_attrib(struct cmesh *cm, int attr, int nelem, unsigned int num,
const float *vdata);
-float *cmesh_attrib(struct cmesh *cm, int attr); /* invalidates VBO */
+float *cmesh_attrib(struct cmesh *cm, int attr); /* invalidates VBO */
const float *cmesh_attrib_ro(struct cmesh *cm, int attr); /* doesn't invalidate */
+float *cmesh_attrib_at(struct cmesh *cm, int attr, int idx);
+const float *cmesh_attrib_at_ro(struct cmesh *cm, int attr, int idx);
int cmesh_attrib_count(struct cmesh *cm, int attr);
+int cmesh_push_attrib(struct cmesh *cm, int attr, float *v);
+int cmesh_push_attrib1f(struct cmesh *cm, int attr, float x);
+int cmesh_push_attrib2f(struct cmesh *cm, int attr, float x, float y);
+int cmesh_push_attrib3f(struct cmesh *cm, int attr, float x, float y, float z);
+int cmesh_push_attrib4f(struct cmesh *cm, int attr, float x, float y, float z, float w);
/* indices can be 0, in which case only memory is allocated
* returns pointer to the index array
unsigned int *cmesh_index(struct cmesh *cm); /* invalidates IBO */
const unsigned int *cmesh_index_ro(struct cmesh *cm); /* doesn't invalidate */
int cmesh_index_count(struct cmesh *cm);
+int cmesh_push_index(struct cmesh *cm, unsigned int idx);
-int get_poly_count(struct cmesh *cm);
+int cmesh_poly_count(struct cmesh *cm);
/* attr can be -1 to invalidate all attributes */
void cmesh_invalidate_vbo(struct cmesh *cm, int attr);
void cmesh_flip_faces(struct cmesh *cm);
void cmesh_flip_normals(struct cmesh *cm);
-void cmesh_explode(struct cmesh *cm); /* undo all vertex sharing */
+int cmesh_explode(struct cmesh *cm); /* undo all vertex sharing */
/* this is only guaranteed to work on an exploded mesh */
void cmesh_calc_face_normals(struct cmesh *cm);
void cmesh_texcoord_gen_box(struct cmesh *cm);
void cmesh_texcoord_gen_cylinder(struct cmesh *cm);
+
+int cmesh_load(struct cmesh *cm, const char *fname);
+
int cmesh_dump(struct cmesh *cm, const char *fname);
int cmesh_dump_file(struct cmesh *cm, FILE *fp);
int cmesh_dump_obj(struct cmesh *cm, const char *fname);