static void init( /*const string &path*/ )
{
  //
  // GLEW Initialization
  //
  
  
    ARParam  wparam;
	
    /* open the video path */
    if( arVideoOpen( vconf ) < 0 ) exit(0);
    /* find the size of the window */
    if( arVideoInqSize(&xsize, &ysize) < 0 ) exit(0);
    printf("Image size (x,y) = (%d,%d)\n", xsize, ysize);

    /* set the initial camera parameters */
    if( arParamLoad(cparam_name, 1, &wparam) < 0 ) {
        printf("Camera parameter load error !!\n");
        exit(0);
    }
    arParamChangeSize( &wparam, xsize, ysize, &cparam );
    arInitCparam( &cparam );
    printf("*** Camera Parameter ***\n");
    arParamDisp( &cparam );
/*
    if( (patt_id=arLoadPatt(patt_name)) < 0 ) {
        printf("pattern load error !!\n");
        exit(0);
    }
*/

    GLenum err = glewInit ();
    if (GLEW_OK != err)
    {
      // Problem: glewInit failed, something is seriously wrong.
      cerr << "Error: " << glewGetErrorString (err) << endl;
      shutdownApp ();
    }

    if( (object=read_ObjData(model_name, &objectnum)) == NULL ) exit(0);
    printf("Objectfile num = %d\n", objectnum);

    /* open the graphics window */
    argInit( &cparam, 1.0, 0, 0, 0, 0 );

    // Initialize timer
    timer.current_time = 0;
    timer.last_time = 0;

    //Init. camera input
    rot.x = 0.0f;   eye.x = 0.0f;
    rot.y = 0.0f;   eye.y = 0.0f;
    rot.z = 0.0f;   eye.z = 8.0f;

    //remove the trailing slash in the path name
//    string dirname (path);
//    if (dirname.find_last_of ('/') == dirname.length () - 1)
//    dirname.assign (dirname, 0, dirname.find_last_of ('/'));
    string dirname = "hueteotl"; 
    string dirname2 = "turret";
    string dirname3 = "gazebo";
    string dirname4 = "roof";

    // Get base dir for player if a *.md2 file is given
    if (dirname.find (".md2") == dirname.length () - 4)
    #ifdef _WIN32
    dirname.assign (dirname, 0, dirname.find_last_of ('\\'));
    #else
    dirname.assign (dirname, 0, dirname.find_last_of ('/'));
    #endif

    // Get base dir for player if a *.md2 file is given
    if (dirname2.find (".md2") == dirname2.length () - 4)
    #ifdef _WIN32
    dirname.assign (dirname2, 0, dirname2.find_last_of ('\\'));
    #else
    dirname.assign (dirname2, 0, dirname2.find_last_of ('/'));
    #endif

    // Get base dir for player if a *.md2 file is given
    if (dirname3.find (".md2") == dirname3.length () - 4)
    #ifdef _WIN32
    dirname.assign (dirname3, 0, dirname3.find_last_of ('\\'));
    #else
    dirname.assign (dirname3, 0, dirname3.find_last_of ('/'));
    #endif

    // Get base dir for player if a *.md2 file is given
    if (dirname4.find (".md2") == dirname3.length () - 4)
    #ifdef _WIN32
    dirname.assign (dirname3, 0, dirname3.find_last_of ('\\'));
    #else
    dirname.assign (dirname3, 0, dirname3.find_last_of ('/'));
    #endif

    // Load MD2 models
   
    try
    {
      player = new Md2Player (dirname);
      player->setScale (1.0f);
      player->setAnim ("run");
    }
    catch (std::runtime_error &err)
    {
      cerr << "Error: failed to load player from " << dirname << endl;
      cerr << "Reason: " << err.what () << endl;

      if (errno)
     cerr << strerror (errno) << endl;

      exit (-1);
    }

    try
    {
      turret = new Md2Player (dirname2);
      turret->setScale (1.0f);
      turret->setAnim ("pow");
    }
    catch (std::runtime_error &err)
    {
      cerr << "Error: failed to load player from " << dirname << endl;
      cerr << "Reason: " << err.what () << endl;

      if (errno)
     cerr << strerror (errno) << endl;

      exit (-1);
    }

    try
    {
      teleport = new Md2Player (dirname3);
      teleport->setScale (0.5f);
      teleport->setAnim ("baseframe");
    }
    catch (std::runtime_error &err)
    {
      cerr << "Error: failed to load player from " << dirname3 << endl;
      cerr << "Reason: " << err.what () << endl;

      if (errno)
     cerr << strerror (errno) << endl;

      exit (-1);
    }
    
    try
    {
      roof = new Md2Player (dirname4);
      roof->setScale (0.5f);
      roof->setAnim ("baseframe");
    }
    catch (std::runtime_error &err)
    {
      cerr << "Error: failed to load player from " << dirname4 << endl;
      cerr << "Reason: " << err.what () << endl;

      if (errno)
     cerr << strerror (errno) << endl;

      exit (-1);
    }

    //initalize enemies
    init_enemies();
    //initialize bullets
    init_bullets();

    //initialize openGL

/*    glClearColor (0.5f, 0.5f, 0.5f, 1.0f);
    glShadeModel (GL_SMOOTH);

    glEnable (GL_DEPTH_TEST);
    glEnable (GL_TEXTURE_2D);
    glEnable (GL_CULL_FACE);
    glEnable (GL_LIGHTING);
    glEnable (GL_LIGHT0);

    glCullFace (GL_BACK);
*/

    glutTimerFunc(BULLET_SPAWN_INTERVAL, spawnBullets, 0);
    
}
示例#2
0
int main(int argc, char * argv[])
{
    // Command line parsing
    char* path = GetCmdOption(argv, argv + argc, "-p");
    g_path = path ? path : g_path;

    char* modelname = GetCmdOption(argv, argv + argc, "-f");
    g_modelname = modelname ? modelname : g_modelname;

    char* width = GetCmdOption(argv, argv + argc, "-w");
    g_window_width = width ? atoi(width) : g_window_width;

    char* height = GetCmdOption(argv, argv + argc, "-h");
    g_window_height = width ? atoi(height) : g_window_height;

    char* aorays = GetCmdOption(argv, argv + argc, "-ao");
    g_ao_radius = aorays ? (float)atof(aorays) : g_ao_radius;

    char* bounces = GetCmdOption(argv, argv + argc, "-nb");
    g_num_bounces = bounces ? atoi(bounces) : g_num_bounces;

    char* camposx = GetCmdOption(argv, argv + argc, "-cpx");
    g_camera_pos.x = camposx ? (float)atof(camposx) : g_camera_pos.x;

    char* camposy = GetCmdOption(argv, argv + argc, "-cpy");
    g_camera_pos.y = camposy ? (float)atof(camposy) : g_camera_pos.y;

    char* camposz = GetCmdOption(argv, argv + argc, "-cpz");
    g_camera_pos.z = camposz ? (float)atof(camposz) : g_camera_pos.z;

    char* camatx = GetCmdOption(argv, argv + argc, "-tpx");
    g_camera_at.x = camatx ? (float)atof(camatx) : g_camera_at.x;

    char* camaty = GetCmdOption(argv, argv + argc, "-tpy");
    g_camera_at.y = camaty ? (float)atof(camaty) : g_camera_at.y;

    char* camatz = GetCmdOption(argv, argv + argc, "-tpz");
    g_camera_at.z = camatz ? (float)atof(camatz) : g_camera_at.z;

    char* envmapmul = GetCmdOption(argv, argv + argc, "-em");
    g_envmapmul = envmapmul ? (float)atof(envmapmul) : g_envmapmul;

    char* numsamples = GetCmdOption(argv, argv + argc, "-ns");
    g_num_samples = numsamples ? atoi(numsamples) : g_num_samples;

    char* interop = GetCmdOption(argv, argv + argc, "-interop");
    g_interop = interop ? (atoi(interop) > 0) : g_interop;

	char* cfg = GetCmdOption(argv, argv + argc, "-config");

	if (cfg)
	{
		if (strcmp(cfg, "cpu") == 0)
			g_mode = ConfigManager::Mode::kUseSingleCpu;
		else if (strcmp(cfg, "gpu") == 0)
			g_mode = ConfigManager::Mode::kUseSingleGpu;
		else if (strcmp(cfg, "mcpu") == 0)
			g_mode = ConfigManager::Mode::kUseCpus;
		else if (strcmp(cfg, "mgpu") == 0)
			g_mode = ConfigManager::Mode::kUseGpus;
		else if (strcmp(cfg, "all") == 0)
			g_mode = ConfigManager::Mode::kUseAll;
	}

	char* cspeed = GetCmdOption(argv, argv + argc, "-cspeed");
	g_cspeed = cspeed ? atof(cspeed) : g_cspeed;

    if (aorays)
    {
        g_num_ao_rays = atoi(aorays);
        g_ao_enabled = true;
    }

    if (CmdOptionExists(argv, argv + argc, "-r"))
    {
        g_progressive = true;
    }

    // GLUT Window Initialization:
    glutInit(&argc, (char**)argv);
    glutInitWindowSize(g_window_width, g_window_height);
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("App");

#ifndef __APPLE__
    GLenum err = glewInit();
    if (err != GLEW_OK)
    {
        std::cout << "GLEW initialization failed\n";
        return -1;
    }
#endif

    try
    {
        InitGraphics();
        InitCl();
        InitData();

        // Register callbacks:
        glutDisplayFunc(Render);
        glutReshapeFunc(Reshape);

        glutSpecialFunc(OnKey);
        glutSpecialUpFunc(OnKeyUp);
        glutMouseFunc(OnMouseButton);
        glutMotionFunc(OnMouseMove);
        glutIdleFunc(Update);

		StartRenderThreads();

        glutMainLoop();

		for (int i = 0; i < g_cfgs.size(); ++i)
		{
			if (i == g_primary)
				continue;

			g_ctrl[i].stop.store(true);
		}
    }
    catch (std::runtime_error& err)
    {
        std::cout << err.what();
        return -1;
    }

    return 0;
}
示例#3
0
static void
init (const string &playerpath, const string &weaponpath)
{
	//
	// GLEW Initialization
	//

	GLenum err = glewInit ();
	if (GLEW_OK != err)
	{
		cerr << "Error: " << glewGetErrorString (err) << endl;
		shutdownApp ();
	}

	//
	// Application initialization
	//

	// Initialize keyboard
	memset (keyboard.keymap, 0, 256);
	memset (keyboard.special, 0, 256);

	// Initialize timer
	timer.current_time = 0;
	timer.last_time = 0;

	// Initialize camera input
	rot.x = 0.0f;   eye.x = 0.0f;
	rot.y = 0.0f;   eye.y = 0.0f;
	rot.z = 0.0f;   eye.z = 8.0f;

	// Get base dir for player if a *.md3 file is given
	string playerdir (playerpath);
	if (playerdir.find (".md3") == playerdir.length () - 4)
	#ifdef _WIN32
    playerdir.assign (playerdir, 0, playerdir.find_last_of ('\\'));
	#else
	playerdir.assign (playerdir, 0, playerdir.find_last_of ('/'));
	#endif

	// Initialize MD3 player
	try
	{
		// Load MD3 player
		player = new Md3Player (playerdir);
		player->setScale (0.05f);
		player->setAnimation (kTorsoStand);
		player->setAnimation (kLegsIdle);

		projectile = new Md3Player ("models\\dalek");
		projectile->setScale (0.01f);
		projectile->setAnimation (kTorsoStand);
		projectile->setAnimation (kLegsIdle);

		// Load 2nd MD3 player
		projectile2 = new Md3Player ("models\\dalek");
		projectile2->setScale (0.01f);
		projectile2->setAnimation (kTorsoStand);
		projectile2->setAnimation (kLegsIdle);

		player2 = new Md3Player (playerdir);
		player2->setScale (0.05f);
		player2->setAnimation (kTorsoStand);
		player2->setAnimation (kLegsIdle);
		string colour = "blue";
		player2->setSkin(colour);
	}

	// Error catching awesomeness
	catch (std::runtime_error &err)
	{
		cerr << "Error: failed to load stuff!" << endl;
		cerr << "Reason: " << err.what () << endl;
		exit (-1);
    }

  //
  // Initialize OpenGL
  //

  glClearColor (0.5f, 0.5f, 5.5f, 1.0f);
  glShadeModel (GL_SMOOTH);

  glEnable (GL_DEPTH_TEST);
  glEnable (GL_TEXTURE_2D);
  glEnable (GL_CULL_FACE);
  glEnable (GL_LIGHTING);
  glEnable (GL_LIGHT0);

  glCullFace (GL_BACK);

}