/**
 * 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;
}
예제 #2
0
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;
}