nuclear@19: #include nuclear@19: #include nuclear@19: #include nuclear@19: #ifndef __APPLE__ nuclear@19: #include nuclear@19: #else nuclear@19: #include nuclear@19: #endif nuclear@19: #include "goat3d.h" nuclear@19: nuclear@19: static void cleanup(void); nuclear@19: static void disp(void); nuclear@19: static void draw_scene(struct goat3d *g); nuclear@19: static void draw_mesh(struct goat3d_mesh *mesh); nuclear@19: static void reshape(int x, int y); nuclear@19: static void keyb(unsigned char key, int x, int y); nuclear@19: static void mouse(int bn, int st, int x, int y); nuclear@19: static void motion(int x, int y); nuclear@19: nuclear@19: static struct goat3d *goat; nuclear@19: static float cam_theta, cam_phi, cam_dist = 10; nuclear@19: nuclear@19: int main(int argc, char **argv) nuclear@19: { nuclear@46: int i, nmeshes; nuclear@46: nuclear@19: glutInitWindowSize(800, 600); nuclear@19: glutInit(&argc, argv); nuclear@19: nuclear@19: if(!argv[1]) { nuclear@19: fprintf(stderr, "you must specify a goat3d scene file to open\n"); nuclear@19: return 1; nuclear@19: } nuclear@19: nuclear@19: if(!(goat = goat3d_create())) { nuclear@19: fprintf(stderr, "failed to create goat3d\n"); nuclear@19: return 1; nuclear@19: } nuclear@19: if(goat3d_load(goat, argv[1]) == -1) { nuclear@19: fprintf(stderr, "failed to load goat3d scene: %s\n", argv[1]); nuclear@19: goat3d_free(goat); nuclear@19: return 1; nuclear@19: } nuclear@19: nuclear@46: nmeshes = goat3d_get_mesh_count(goat); nuclear@46: printf("loaded %d meshes\n", nmeshes); nuclear@46: for(i=0; i 90) cam_phi = 90; nuclear@19: glutPostRedisplay(); nuclear@19: } nuclear@19: if(bnstate[2]) { nuclear@19: cam_dist += dy * 0.1; nuclear@19: nuclear@19: if(cam_dist < 0) cam_dist = 0; nuclear@19: glutPostRedisplay(); nuclear@19: } nuclear@19: }