#include #include #include #include #include #include /* gettimeofday() */ #include #include #include "Scene.h" using namespace std; void usage(const char * progname) { cout << "Usage: " << progname << " [options] " << endl; cout << " Options:" << endl; cout << " -o|--output-file " << endl; cout << " -w|--width " << endl; cout << " -h|--height " << endl; cout << " -m|--multisample " << endl; cout << " -f|--field-of-view " << endl; cout << " -v|--verbose" << endl; exit(42); } int main(int argc, char * argv[]) { int opt; int option_index; map scene_options; static const struct option long_options[] = { { "help", no_argument, NULL, 256 }, { "output-file", required_argument, NULL, 'o' }, { "width", required_argument, NULL, 'w' }, { "height", required_argument, NULL, 'h' }, { "multisample", required_argument, NULL, 'm' }, { "field-of-view", required_argument, NULL, 'f' }, { "verbose", no_argument, NULL, 'v' }, { NULL, 0, NULL, 0 } }; while ((opt = getopt_long(argc, argv, "o:w:h:m:f:v", long_options, &option_index)) != -1) { switch (opt) { case 256: usage(argv[0]); break; case 'o': scene_options["output-file"] = optarg; break; case 'w': scene_options["width"] = optarg; break; case 'h': scene_options["height"] = optarg; break; case 'm': scene_options["multisample"] = optarg; break; case 'f': scene_options["field-of-view"] = optarg; break; case 'v': scene_options["verbose"] = optarg; break; default: usage(argv[0]); } } if (optind >= argc) { usage(argv[0]); } Scene scene(scene_options, argv[optind]); struct timeval before, after; gettimeofday(&before, NULL); /* start timing */ scene.render(); gettimeofday(&after, NULL); /* stop timing */ double time_before = before.tv_sec + before.tv_usec / 1000000.0; double time_after = after.tv_sec + after.tv_usec / 1000000.0; double diff = time_after - time_before; cout << "Elapsed time: " << diff << " seconds." << endl; return 0; }