nuclear@16: #include nuclear@16: #include "goat3d.h" nuclear@16: nuclear@16: static struct goat3d_mesh *create_box(void); nuclear@16: nuclear@16: int main(void) nuclear@16: { nuclear@16: struct goat3d *goat; nuclear@16: struct goat3d_material *mtl; nuclear@16: struct goat3d_mesh *mesh; nuclear@16: nuclear@16: goat = goat3d_create(); nuclear@16: nuclear@16: mtl = goat3d_create_mtl(); nuclear@16: goat3d_set_mtl_name(mtl, "mat"); nuclear@16: goat3d_set_mtl_attrib4f(mtl, GOAT3D_MAT_ATTR_DIFFUSE, 1, 0, 0, 1); nuclear@16: goat3d_add_mtl(goat, mtl); nuclear@16: nuclear@16: mesh = create_box(); nuclear@16: goat3d_add_mesh(goat, mesh); nuclear@16: nuclear@16: goat3d_setopt(goat, GOAT3D_OPT_SAVEXML, 1); nuclear@16: goat3d_save(goat, "foo.xml"); nuclear@16: nuclear@16: goat3d_free(goat); nuclear@16: return 0; nuclear@16: } nuclear@16: nuclear@16: static struct goat3d_mesh *create_box(void) nuclear@16: { nuclear@16: struct goat3d_mesh *mesh = goat3d_create_mesh(); nuclear@16: nuclear@16: goat3d_begin(mesh, GOAT3D_QUADS); nuclear@16: // +X nuclear@16: goat3d_normal3f(1, 0, 0); nuclear@16: goat3d_vertex3f(-1, -1, 1); nuclear@16: goat3d_vertex3f(-1, -1, -1); nuclear@16: goat3d_vertex3f(-1, 1, -1); nuclear@16: goat3d_vertex3f(-1, 1, 1); nuclear@16: nuclear@16: // -X nuclear@16: goat3d_normal3f(-1, 0, 0); nuclear@16: goat3d_vertex3f(-1, -1, -1); nuclear@16: goat3d_vertex3f(-1, -1, 1); nuclear@16: goat3d_vertex3f(-1, 1, 1); nuclear@16: goat3d_vertex3f(-1, 1, -1); nuclear@16: nuclear@16: // +Y nuclear@16: goat3d_normal3f(0, 1, 0); nuclear@16: goat3d_vertex3f(-1, 1, 1); nuclear@16: goat3d_vertex3f(1, 1, 1); nuclear@16: goat3d_vertex3f(1, 1, -1); nuclear@16: goat3d_vertex3f(-1, 1, -1); nuclear@16: nuclear@16: // -Y nuclear@16: goat3d_normal3f(0, -1, 0); nuclear@16: goat3d_vertex3f(-1, -1, -1); nuclear@16: goat3d_vertex3f(1, -1, -1); nuclear@16: goat3d_vertex3f(1, -1, 1); nuclear@16: goat3d_vertex3f(-1, -1, 1); nuclear@16: nuclear@16: // +Z nuclear@16: goat3d_normal3f(0, 0, 1); nuclear@16: goat3d_vertex3f(-1, -1, 1); nuclear@16: goat3d_vertex3f(1, -1, 1); nuclear@16: goat3d_vertex3f(1, -1, 1); nuclear@16: goat3d_vertex3f(-1, -1, 1); nuclear@16: nuclear@16: // -Z nuclear@16: goat3d_normal3f(0, 0, -1); nuclear@16: goat3d_vertex3f(-1, -1, 1); nuclear@16: goat3d_vertex3f(1, -1, 1); nuclear@16: goat3d_vertex3f(1, -1, -1); nuclear@16: goat3d_vertex3f(-1, -1, -1); nuclear@16: goat3d_end(); nuclear@16: nuclear@16: return mesh; nuclear@16: }