/** * Not-So-Simple raytracer demo by Hoanh Nguyen. * @param argc Not used. * @param argv Not used. * @return 0. */ int main( int argc, char **argv ) { Engine::init( &argc, argv, "Raytracer" ); GLint program = Angel::InitShader( "shaders/vRaytracer.glsl", "shaders/fRaytracer.glsl" ); rt.init( program ); if (1) { Object *bottle = Engine::instance()->rootScene()->addObject( "bottle", program ); ObjLoader::loadModelFromFile( bottle, "../models/bottle_wine_med.obj" ); //ObjLoader::loadMaterialFromFile( bottle, "../models/bottle_wine_med.mtl" ); rt.pushDataToBuffer(); } else { rt.legacySceneGen(); } glutDisplayFunc( RTdisplay ); // register callback w/Window System boost::thread zipo( aRomanticEvening ); GLCHECK(); Engine::run(); printf("This doesnt exit cleanly... woops.\n"); rt.thisDateIsOver(); zipo.join(); return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { signal(SIGSEGV, handler); FILE* pStream; if (argc == 1) { pStream = stdin; } else if (argc == 2 && (pStream = fopen(argv[1], "r"))) { } else { usage(); } // initialization RayTracer app; app.init(pStream); app.run(); // encode raytracer image encodeOneStep("output.png", app.getFilm()->getBuffer(), OUTPUT_IMAGE_WIDTH, OUTPUT_IMAGE_HEIGHT); // clean up app.halt(); fclose(pStream); return 0; }