int main (int argc, char * argv[])
{

    srand(time(NULL));
    srand((unsigned int)time((time_t *)NULL));

    printf("Instructions:\n"
            "Hold down the left mouse button to rotate image: \n"
            "\n"
            "Hold 'm' while holding down the right mouse to move the end\n"
            "Hold 't' while holding down the right mouse to rotate the tangent \n"
            "\n"
            "Press 'Esc' to quit\n"
    );

    InitGLUT(argc, argv);
    InitLights();
    InitStuff ();



    InitThread(argc, argv);


    glutMainLoop ();
}
Esempio n. 2
0
bool
GetLight(hal::LightType light, hal::LightConfiguration* aConfig)
{
  light_state_t state;

#ifdef HAVEGETLIGHT
  InitLights();
#endif

  if (light < 0 || light >= hal::eHalLightID_Count || sLights[light] == NULL) {
    return false;
  }

  memset(&state, 0, sizeof(light_state_t));

#ifdef HAVEGETLIGHT
  sLights[light]->get_light(sLights[light], &state);
#else
  state = sStoredLightState[light];
#endif

  aConfig->light() = light;
  aConfig->color() = state.color;
  aConfig->flash() = hal::FlashMode(state.flashMode);
  aConfig->flashOnMS() = state.flashOnMS;
  aConfig->flashOffMS() = state.flashOffMS;
  aConfig->mode() = hal::LightMode(state.brightnessMode);

  return true;
}
Esempio n. 3
0
    Tutorial36() 
    {
        m_pGameCamera = NULL;
        m_scale = 0.0f;

        m_persProjInfo.FOV = 60.0f;
        m_persProjInfo.Height = WINDOW_HEIGHT;
        m_persProjInfo.Width = WINDOW_WIDTH;
        m_persProjInfo.zNear = 1.0f;
        m_persProjInfo.zFar = 100.0f;  
        
        InitLights();
        InitBoxPositions();
    }
Esempio n. 4
0
    Tutorial36() 
    {
        m_pGameCamera = NULL;
        m_scale = 0.0f;

        m_persProjInfo.FOV = 60.0f;
        m_persProjInfo.Height = WINDOW_HEIGHT;
        m_persProjInfo.Width = WINDOW_WIDTH;
        m_persProjInfo.zNear = 1.0f;
        m_persProjInfo.zFar = 100.0f;  
        
        m_frameCount = 0;
        m_fps = 0.0f;
		
        InitLights();
        InitBoxPositions();
        
        m_time = glutGet(GLUT_ELAPSED_TIME);
    }
Esempio n. 5
0
bool
SetLight(hal::LightType light, const hal::LightConfiguration& aConfig)
{
  light_state_t state;

  InitLights();

  if (light < 0 || light >= hal::eHalLightID_Count || sLights[light] == NULL) {
    return false;
  }

  memset(&state, 0, sizeof(light_state_t));
  state.color = aConfig.color();
  state.flashMode = aConfig.flash();
  state.flashOnMS = aConfig.flashOnMS();
  state.flashOffMS = aConfig.flashOffMS();
  state.brightnessMode = aConfig.mode();

  sLights[light]->set_light(sLights[light], &state);
  sStoredLightState[light] = state;
  return true;
}
Esempio n. 6
0
GRAPHICS::GRAPHICS(HWND in_hwnd) : 
	hwnd(in_hwnd)
{
	try
	{
		d3d = Direct3DCreate9(D3D_SDK_VERSION);
		if (!d3d)
			throw 0;

		try
		{
			CreateDirect3DDevice();
			
			try
			{
				InitVBCube();
			}
			catch(...) { d3ddev->Release(); throw; }
		}
		catch(...) { d3d->Release(); throw; }
	}
	catch(...) { throw; }

	InitLights();
	InitMaterials();

	strWorld.rotationY = 0.0f;
	strWorld.rotationZ = 0.0f;
	strView.camera_pos = D3DXVECTOR3(6.0f, 0.0f, 0.0f);
	strView.look_at_point = D3DXVECTOR3(0.0f, 0.0f, 0.0f);
	strView.up_direction = D3DXVECTOR3(0.0f, 0.0f, 1.0f);
	strProjection.angle = 45;
	strProjection.plane_near = 1.0f;
	strProjection.plane_far = 100.0f;
	UpdateMatrixWorld();
	UpdateMatrixView();
	UpdateMatrixProjection();
}
Esempio n. 7
0
int main (int argc, char * argv[])
{

  //srand(time(NULL));
  //srand((unsigned int)time((time_t *)NULL));
  
  printf("Instructions:\n"
      "Hold down the left mouse button to rotate image: \n"
      "\n"
      "Hold 'm' while holding down the right mouse to move the end\n"
      "Hold 't' while holding down the right mouse to rotate the tangent \n"
      "\n"
      "Press 'Esc' to quit\n"
      );
  InitGLUT(argc, argv);
  InitLights();
  InitStuff ();
  InitThread(argc, argv);

  signal(SIGINT, &interruptHandler);
  cout << "Running with CPU Threads = " << NUM_CPU_THREADS << endl; 
  glutMainLoop ();
}
Esempio n. 8
0
VOID	ReadEnvFile(CHAR *EnvFileName)
	{
	INT	i, j;				/* Indices.		     */
	INT	stat;				/* Input var status counter. */
	INT	dummy;
	CHAR	opcode; 			/* Environment spec opcode.  */
	CHAR	command[30];			/* Environment spec command. */
	CHAR	opparam[30];			/* Command parameter.	     */
	CHAR	dummy_char[60];
	CHAR	datafile[10];
	BOOL	lights_set;			/* Lights set?		     */
	FILE	*pf;				/* Input file pointer.	     */
	LIGHT	*lptr, *lastlight;		/* Light node pointers.      */


	/* Open command file. */

	pf = fopen(EnvFileName, "r");
	if (!pf)
		{
		printf("Unable to open environment file %s.\n", EnvFileName);
		exit(-1);
		}

	InitEnv();			/* Set defaults. */

	nlights    = 0;
	lights_set = FALSE;


	/* Process command file according to opcodes. */

	while (fscanf(pf, "%s", command) != EOF)
		{
		opcode = LookupCommand(command);

		switch (opcode)
			{
			/* Eye position. */
			case OP_EYE:
				stat = fscanf(pf, "%lf %lf %lf", &(View.eye[0]), &(View.eye[1]), &(View.eye[2]));
				if (stat != 3)
					{
					printf("error: eye position.\n");
					exit(-1);
					}
				break;

			/* Center of interest position. */
			case OP_COI:
				stat = fscanf(pf, "%lf %lf %lf", &(View.coi[0]), &(View.coi[1]), &(View.coi[2]));
				if (stat != 3)
					{
					printf("error: coi position.\n");
					exit(-1);
					}
				break;

			/* Background color. */
			case OP_BKGCOL:
				stat = fscanf(pf, "%lf %lf %lf", &(View.bkg[0]), &(View.bkg[1]), &(View.bkg[2]));
				if (stat != 3)
					{
					printf("error: background color.\n");
					exit(-1);
					}

				if (!VerifyColorRange(View.bkg))
					exit(-1);
				break;

			/* Viewing angle in degrees. */
			case OP_VANG:
				stat = fscanf(pf, "%lf", &(View.vang));
				if (stat != 1)
					{
					printf("error: viewing angle.\n");
					exit(-1);
					}

				if (View.vang < 0.0 || View.vang > 100.0)
					{
					printf("Invalid angle %f.\n", View.vang);
					exit(-1);
					}
				break;

			/* Ambient. */
			case OP_AMBIENT:
				stat = fscanf(pf, "%lf %lf %lf", &(View.ambient[0]), &(View.ambient[1]), &(View.ambient[2]));
				if (stat != 3)
					{
					printf("error: ambient.\n");
					exit(-1);
					}

				if (!VerifyColorRange(View.ambient))
					exit(-1);
				break;

			/* Anti-aliasing level. */
			case OP_ANTILEVEL:
				stat = fscanf(pf, "%ld", &(Display.maxAAsubdiv));
				if (stat != 1)
					{
					printf("View error: antialias level.\n");
					exit(-1);
					}

				if (Display.maxAAsubdiv < 0 || Display.maxAAsubdiv > 3)
					{
					printf("error: antialias level %ld.\n", Display.maxAAsubdiv);
					exit(-1);
					}
				break;

			/* Recursion level. */
			case OP_MAXLEVEL:
				stat = fscanf(pf, "%ld", &(Display.maxlevel));
				printf("maxlevel of ray recursion = %ld\n",Display.maxlevel);
				fflush(stdout);
				if (stat != 1)
					{
					printf("error: recursion level.\n");
					exit(-1);
					}

				if (Display.maxlevel > 5 || Display.maxlevel < 0)
					{
					printf("error: recursion level %ld.\n", Display.maxlevel);
					exit(-1);
					}
				break;

			/* Mininum ray weight. */
			case OP_MINWEIGHT:
				stat = fscanf(pf, "%lf", &(Display.minweight));
				if (stat != 1)
					{
					printf("error: miniumum ray weight.\n");
					exit(-1);
					}

				if (Display.minweight < 0.0 || Display.minweight > 1.0)
					{
					printf("error: invalid ray weight %f.\n", Display.minweight);
					exit(-1);
					}
				break;

			/* Anti tolerance weight. */
			case OP_ANTITOL:
				stat = fscanf(pf, "%lf", &(Display.aatolerance));
				if (stat != 1)
					{
					printf("error: anti tolerance weight.\n");
					exit(-1);
					}

				if (Display.aatolerance < 0.0 || Display.aatolerance > 1.0)
					{
					printf("error: invalid anti tolerance weight %f.\n", Display.aatolerance);
					exit(-1);
					}
				break;

			/* Resolution. */
			case OP_RES:
				stat = fscanf(pf, "%ld %ld", &(Display.xres), &(Display.yres));
				if (stat != 2)
					{
					printf("error: resolution.\n");
					exit(-1);
					}
				break;

			/* Light positions and colors. */
			case OP_LIGHT:
				lights_set = TRUE;
				if (nlights > 0)
					lptr = GlobalMalloc(sizeof(LIGHT), "env.c");
				else
					lptr = lights;

				stat = fscanf(pf, "%lf %lf %lf %lf %lf %lf",
					      &(lptr->pos[0]),
					      &(lptr->pos[1]),
					      &(lptr->pos[2]),
					      &(lptr->col[0]),
					      &(lptr->col[1]),
					      &(lptr->col[2]));

				if (stat != 6)
					{
					printf("error: Lights.\n");
					exit(-1);
					}

				if (!VerifyColorRange(lptr->col))
					exit(-1);

				lptr->pos[3] = 1.0;
				stat = fscanf(pf, "%ld", &(lptr->shadow));
				if (stat != 1)
					{
					printf("error: Lights shadow indicator.\n");
					exit(-1);
					}

				lptr->next = NULL;
				if (nlights > 0)
					lastlight->next = lptr;

				nlights++;
				lastlight = lptr;
				break;

			/* Model transformation matrix. */
			case OP_MODELMAT:
				for (i = 0; i < 4; i++)
					for (j = 0; j < 4; j++)
						{
						stat = fscanf(pf, "%lf", &(View.model[i][j]));
						if (stat != 1)
							{
							printf("Error in matrix.\n");
							exit(-1);
							}
						}

				ModelTransform = TRUE;
				break;

			/* Shadow info. */
			case OP_SHAD:
				stat = fscanf(pf, "%s", opparam);
				if (stat != 1)
					{
					printf("error: shadow.\n");
					exit(-1);
					}

				if (strcmp(opparam, "on") == 0)
					View.shad = TRUE;
				else
					View.shad = FALSE;
				break;

			/* Shading info. */
			case OP_SHADING:
				stat = fscanf(pf, "%s", opparam);
				if (stat != 1)
					{
					printf("error: shading %s.\n", opparam);
					exit(-1);
					}

				if (strcmp(opparam, "on") == 0)
					View.shading = TRUE;
				else
					View.shading = FALSE;
				break;

			/* Projection type. */
			case OP_PROJECT:
				stat = fscanf(pf, "%s", opparam);
				if (stat != 1)
					{
					printf("error: projection %s.\n", opparam);
					exit(-1);
					}

				if (strcmp(opparam, "perspective") == 0)
					View.projection = PT_PERSP;
				else
				if (strcmp(opparam, "orthographic") == 0)
					View.projection = PT_ORTHO;
				else
					{
					printf("Invalid projection %s.\n", opparam);
					exit(-1);
					}
				break;

			/* Database traversal info. */
			case OP_TRAVERSAL:
				stat = fscanf(pf, "%s", opparam);
				if (stat != 1)
					{
					printf("error: traversal %s.\n", opparam);
					exit(-1);
					}

				if (strcmp(opparam, "list") == 0)
					TraversalType = TT_LIST;
				else
				if (strcmp(opparam, "huniform") == 0)
					TraversalType = TT_HUG;
				else
					{
					printf("Invalid traversal code %s.\n", opparam);
					exit(-1);
					}
				break;

			/* Geometry file. */
			case OP_GEOM_FILE:
				stat = fscanf(pf, " %s", GeoFileName);
				if (stat != 1)
					{
					printf("error: geometry file.\n");
					exit(-1);
					}

				GeoFile = TRUE;
				break;

			/* Runlength file. */
			case OP_RL_FILE:
				stat = fscanf(pf, " %s", PicFileName);
				if (stat != 1)
					{
					printf("error: runlength file.\n");
					exit(-1);
					}

				PicFile = TRUE;
				break;

			case OP_PREVIEW_BKCULL:
				stat = fscanf(pf, "%ld", &dummy);
				if (stat != 1)
					{
					printf("error: Preview bkcull.\n");
					exit(-1);
					}
				break;

			case OP_PREVIEW_FILL:
				stat = fscanf(pf, "%ld", &dummy);
				if (stat != 1)
					{
					printf("error: Preview fill.\n");
					exit(-1);
					}
				break;

			case OP_PREVIEW_SPHTESS:
				stat = fscanf(pf, "%s", dummy_char);
				if (stat != 1)
					{
					printf("error: sphere tess.\n");
					exit(-1);
					}
				break;

			case OP_NORM_DB:
				stat = fscanf(pf, "%s", opparam);
				if (stat != 1)
					{
					printf("error: norm database.\n");
					exit(-1);
					}

				if (strcmp(opparam, "no") == 0)
					ModelNorm = FALSE;

				break;

			case OP_DATA_TYPE:
				stat = fscanf(pf, "%s", datafile);
				if (stat != 1)
					{
					printf("error: datatype.\n");
					exit(-1);
					}

				if (strcmp(datafile, "binary") == 0)
					DataType = DT_BINARY;

				break;

			case OP_HU_MAX_PRIMS_CELL:
				stat = fscanf(pf, "%ld", &hu_max_prims_cell);
				if (stat != 1)
					{
					printf("error: Huniform prims per cell.\n");
					exit(-1);
					}
				break;

			case OP_HU_GRIDSIZE:
				stat = fscanf(pf, "%ld", &hu_gridsize);
				if (stat != 1)
					{
					printf("error: Huniform gridsize.\n");
					exit(-1);
					}
				break;

			case OP_HU_NUMBUCKETS:
				stat = fscanf(pf, "%ld", &hu_numbuckets);
				if (stat != 1)
					{
					printf("error: Huniform numbuckets.\n");
					exit(-1);
					}
				break;

			case OP_HU_MAX_SUBDIV:
				stat = fscanf(pf, "%ld", &hu_max_subdiv_level);
				if (stat != 1  || hu_max_subdiv_level > 3)
					{
					printf("error: Huniform max subdiv level.\n");
					exit(-1);
					}
				break;

			case OP_HU_LAZY:
				stat = fscanf(pf, "%ld", &hu_lazy);
				if (stat != 1)
					{
					printf("error: Huniform lazy.\n");
					exit(-1);
					}
				break;

			case OP_BUNDLE:
				stat = fscanf(pf, "%ld %ld", &bundlex, &bundley);
				if (stat != 2 )
					{
					printf("error: bundle.\n");
					exit(-1);
					}
				break;

			case OP_BLOCK:
				stat = fscanf(pf, "%ld %ld", &blockx, &blocky);
				if (stat != 2 )
					{
					printf("error: block.\n");
					exit(-1);
					}
				break;

			default:
				printf("Warning: unrecognized env command: %s.\n", command);
				break;
			}
		}

	fclose(pf);

	/* Display parameters reset. */
	Display.numpixels = Display.xres*Display.yres;
	Display.vWscale   = Display.scrWidth/Display.xres;
	Display.vHscale   = Display.scrHeight/Display.yres;


	/* If no light information given, set default. */
	if (!lights_set)
		InitLights();

	/* Set up screen parameters. */
	InitDisplay();

	/* Parameter check; think about lifting this restriction. */
	if ((TraversalType != TT_LIST) && ModelNorm == FALSE)
		{
		printf("Data must be normalized with this traversal method!.\n");
		ModelNorm = TRUE;
		}
	}
Esempio n. 9
0
void VRSim::init(){
  windowWidth = 1920;
  windowHeight = 1080;
  InitLights();
  InitColorPalette();


  m_gbuffer.Init(windowWidth,windowHeight);
  geomProgram.init();

  //initialize point lights
  pointProgram.init();
  //pointProgram.SetPointLight(m_pointLight[0]);

  dirProgram.init();
  dirProgram.SetDirectionalLight(m_dirLight);

  //not sure what this is used for
  m_nullTech.init();

  //load models
  tree.loadModel("./bin/tree/tree.obj");
  quad.loadModel("./bin/quad.obj");
  sphere.loadModel("./bin/sphere.obj");
  pen.loadModel("./bin/objects/Pen.obj");
  textpaint.loadModel("./bin/earth.obj");

  // Terrain
  terrain = new Terrain(cavr::math::vec3f(1000,300,1000), "./bin/terrain/output.jpg");
  terrain->initialize();

  //the origins of time
  t2 = t1 = std::chrono::high_resolution_clock::now();
  time = 0;
  xValOld = 0.0f;
  yValOld = 0.0f;
  boost = rotation = false;

  cam = Engine::getEngine()->graphics->camera;
  currentColor = cavr::math::vec3f(1,0,0);

  cursor.init();
  skybox = new Skybox();

  // Rui sound
  engine = createIrrKlangDevice();
  // init music name list
  musicName.push_back("media/A0.wav");
  musicName.push_back("media/A1.wav");
  musicName.push_back("media/A2.wav");
  musicName.push_back("media/A3.wav");
  musicName.push_back("media/A4.wav");
  musicName.push_back("media/A5.wav");
  musicName.push_back("media/A6.wav");
  musicName.push_back("media/A7.wav");
  
  // Rui fake gravity
  sphereRadius = 1;

  //Build the texture list
  buttonPress = true;
  textureindex = 0;
  TextureBall temp; 
  std::string path = "./bin/whatever.jpg";
  if (temp.image.load(path.c_str()))
  {
    temp.image.convertTo32Bits();

    glGenTextures(1, &temp.id);
    glBindTexture(GL_TEXTURE_2D, temp.id);
    glTexImage2D(GL_TEXTURE_2D, 7, GL_RGBA, temp.image.getWidth(),
                 temp.image.getHeight(),
                 0, GL_BGRA, GL_UNSIGNED_BYTE,
                 (GLvoid *) temp.image.accessPixels());
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    textures.push_back(temp);
  }
  else
  {
    std::cout << "Texture: " << path.c_str() << " failed to load" << std::endl;
  }
 
  //Build the texture list
  path = "./bin/polkadots.jpg";
  if (temp.image.load(path.c_str()))
  {
    temp.image.convertTo32Bits();

    glGenTextures(1, &temp.id);
    glBindTexture(GL_TEXTURE_2D, temp.id);
    glTexImage2D(GL_TEXTURE_2D, 7, GL_RGBA, temp.image.getWidth(),
                 temp.image.getHeight(),
                 0, GL_BGRA, GL_UNSIGNED_BYTE,
                 (GLvoid *) temp.image.accessPixels());
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    textures.push_back(temp);
  }
  else
  {
    std::cout << "Texture: " << path.c_str() << " failed to load" << std::endl;
  }
}
Esempio n. 10
0
void SceneBase::InitShadersAndLights(string vertexShader, string fragmentShader)
{
	const int NUM_LIGHT_PARAMS = U_LIGHT0_EXPONENT - U_NUMLIGHTS;

	//Load vertex and fragment shaders
	m_programID = LoadShaders(vertexShader.c_str(), fragmentShader.c_str());
	// Use our shader
	glUseProgram(m_programID);

	#pragma region Loop to get a handle for all our "colorTexture" uniforms

	// Individual Texture Params
	const int NUM_TEX_PARAMS = 2;
	string texCode[NUM_TEX_PARAMS] =
	{
		"colorTextureEnabled[0]",
		"colorTexture[0]"
	};

	for (int i = 0; i < Mesh::MAX_TEXTURES; ++i)		// For every texture
	{
		if (i != 0)
		{
			// Loop to update array index of strings
			for (size_t param = 0; param < NUM_TEX_PARAMS; ++param)		// For every param for each texture
			{
				texCode[param][texCode[param].length() - 2] = static_cast<char>(i + 48) /*convert into char*/;
			}
		}

		m_parameters[U_COLOR_TEXTURE_ENABLED + i] = glGetUniformLocation(m_programID, texCode[0].c_str());
		m_parameters[U_COLOR_TEXTURE + i] = glGetUniformLocation(m_programID, texCode[1].c_str());
	}

	#pragma endregion

	// Get a handle for our "textColor" uniform
	m_parameters[U_TEXT_ENABLED] = glGetUniformLocation(m_programID, "textEnabled");
	m_parameters[U_TEXT_COLOR] = glGetUniformLocation(m_programID, "textColor");

	// Get a handle for our uniform
	m_parameters[U_MVP] = glGetUniformLocation(m_programID, "MVP");
	//m_parameters[U_MODEL] = glGetUniformLocation(m_programID, "M");
	//m_parameters[U_VIEW] = glGetUniformLocation(m_programID, "V");
	m_parameters[U_MODELVIEW] = glGetUniformLocation(m_programID, "MV");
	m_parameters[U_MODELVIEW_INVERSE_TRANSPOSE] = glGetUniformLocation(m_programID, "MV_inverse_transpose");
	m_parameters[U_MATERIAL_AMBIENT] = glGetUniformLocation(m_programID, "material.kAmbient");
	m_parameters[U_MATERIAL_DIFFUSE] = glGetUniformLocation(m_programID, "material.kDiffuse");
	m_parameters[U_MATERIAL_SPECULAR] = glGetUniformLocation(m_programID, "material.kSpecular");
	m_parameters[U_MATERIAL_SHININESS] = glGetUniformLocation(m_programID, "material.kShininess");

	// Global Light Params
	m_parameters[U_LIGHTENABLED] = glGetUniformLocation(m_programID, "lightEnabled");
	m_parameters[U_NUMLIGHTS] = glGetUniformLocation(m_programID, "numLights");

	#pragma region Loop to get a handle for all our light related uniforms

	// Individual Light Params
	string code[NUM_LIGHT_PARAMS] =
	{
		"lights[0].position_cameraspace",
		"lights[0].color",
		"lights[0].power",
		"lights[0].kC",
		"lights[0].kL",
		"lights[0].kQ",
		"lights[0].type",
		"lights[0].spotDirection",
		"lights[0].cosCutoff",
		"lights[0].cosInner",
		"lights[0].exponent"
	};

	const short INDEX_POS = 7;

	for (int i = 0; i < m_NUM_LIGHTS; ++i)		// For every light
	{
		if (i != 0)
		{
			// Loop to update array index of strings
			for (size_t param = 0; param < NUM_LIGHT_PARAMS; ++param)		// For every param for each light
			{
				code[param][INDEX_POS] = static_cast<char>(i + 48) /*convert into char*/;
			}
		}

		m_parameters[U_LIGHT0_POSITION + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[0].c_str());
		m_parameters[U_LIGHT0_COLOR + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[1].c_str());
		m_parameters[U_LIGHT0_POWER + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[2].c_str());
		m_parameters[U_LIGHT0_KC + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[3].c_str());
		m_parameters[U_LIGHT0_KL + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[4].c_str());
		m_parameters[U_LIGHT0_KQ + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[5].c_str());
		m_parameters[U_LIGHT0_TYPE + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[6].c_str());
		m_parameters[U_LIGHT0_SPOTDIRECTION + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[7].c_str());
		m_parameters[U_LIGHT0_COSCUTOFF + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[8].c_str());
		m_parameters[U_LIGHT0_COSINNER + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[9].c_str());
		m_parameters[U_LIGHT0_EXPONENT + i * NUM_LIGHT_PARAMS] = glGetUniformLocation(m_programID, code[10].c_str());
	}

	glUniform1i(m_parameters[U_NUMLIGHTS], m_NUM_LIGHTS);

	InitLights();

	for (int i = 0; i < m_NUM_LIGHTS; ++i)
	{
		if (lights[i].power > Math::EPSILON)
		{
			glUniform1i(m_parameters[U_LIGHT0_TYPE + NUM_LIGHT_PARAMS * i], lights[i].type);
			glUniform3fv(m_parameters[U_LIGHT0_COLOR + NUM_LIGHT_PARAMS * i], 1, &lights[i].color.r);
			glUniform1f(m_parameters[U_LIGHT0_POWER + NUM_LIGHT_PARAMS * i], lights[i].power);
			glUniform1f(m_parameters[U_LIGHT0_KC + NUM_LIGHT_PARAMS * i], lights[i].kC);
			glUniform1f(m_parameters[U_LIGHT0_KL + NUM_LIGHT_PARAMS * i], lights[i].kL);
			glUniform1f(m_parameters[U_LIGHT0_KQ + NUM_LIGHT_PARAMS * i], lights[i].kQ);
			glUniform1f(m_parameters[U_LIGHT0_COSCUTOFF + NUM_LIGHT_PARAMS * i], lights[i].cosCutoff);
			glUniform1f(m_parameters[U_LIGHT0_COSINNER + NUM_LIGHT_PARAMS * i], lights[i].cosInner);
			glUniform1f(m_parameters[U_LIGHT0_EXPONENT + NUM_LIGHT_PARAMS * i], lights[i].exponent);
		}
	}

	#pragma endregion

	glUniform1i(m_parameters[U_TEXT_ENABLED], 0);
}
Esempio n. 11
0
                                int main (int argc, char * argv[])
                                {

                                    srand(time(NULL));
                                    srand((unsigned int)time((time_t *)NULL));

                                    printf("Instructions:\n"
                                        "Hold down the left mouse button to rotate image: \n"
                                        "\n"
                                        "Hold 'm' while holding down the right mouse to move the end\n"
                                        "Hold 't' while holding down the right mouse to rotate the tangent \n"
                                        "\n"
                                        "Press 'Esc' to quit\n"
                                        );

                                    InitGLUT(argc, argv);
                                    InitLights();
                                    InitStuff ();




                                    InitThread(argc, argv);
                                    traj_reader_good.read_threads_from_file();
                                    traj_reader_bad.read_threads_from_file();




#ifdef NYLON
                                    thread_vision.set_reproj_fix_canny(POINTFILE_NYLON);
#elif defined PURPLE
                                    thread_vision.set_reproj_fix_canny(POINTFILE_PURPLE);
#elif defined BLACK
                                    thread_vision.set_reproj_fix_canny(POINTFILE_BLACK);
#endif

  // for (int i=0; i < NUM_PTS; i++)
  // {
  //   radii[i]=THREAD_RADII;
  // }
  //
  //

/*
std::cout << (traj_reader.get_all_threads()[0].start_pos() - traj_reader.get_all_threads()[0].end_pos()).norm() << std::endl;
std::cout << (traj_reader.get_all_threads()[10].start_pos() - traj_reader.get_all_threads()[10].end_pos()).norm() << std::endl;
std::cout << (traj_reader.get_all_threads()[20].start_pos() - traj_reader.get_all_threads()[20].end_pos()).norm() << std::endl;
std::cout << (traj_reader.get_all_threads()[30].start_pos() - traj_reader.get_all_threads()[30].end_pos()).norm() << std::endl;
std::cout << (traj_reader.get_all_threads()[40].start_pos() - traj_reader.get_all_threads()[40].end_pos()).norm() << std::endl;
std::cout << (traj_reader.get_all_threads()[50].start_pos() - traj_reader.get_all_threads()[50].end_pos()).norm() << std::endl;
std::cout << (traj_reader.get_all_threads().back().start_pos() - traj_reader.get_all_threads().back().end_pos()).norm() << std::endl;
*/

if (TRY_ALL)
{
    char filename_errs[256];
#ifdef NYLON
    sprintf(filename_errs, "%s%s.txt", POINTS_ERR_SAVE_BASE, "nylon");
#elif defined PURPLE
    sprintf(filename_errs, "%s%s.txt", POINTS_ERR_SAVE_BASE, "purple");
#elif defined BLACK
    sprintf(filename_errs, "%s%s.txt", POINTS_ERR_SAVE_BASE, "black");
#else
    sprintf(filename_errs, "%s%s.txt", POINTS_ERR_SAVE_BASE, "notype");
#endif
    std::ofstream points_err_out;
    points_err_out.precision(10);
    points_err_out.open(filename_errs);
    while (thread_ind < all_threads.size())
    {
        processNormalKeys('v', lastx_R, lasty_R);

        points_err_out << thread_ind << " " << err_fullopt << " " << err_visiononly << " " << twistAngle_correct << " " <<score_correct_twist << " " << " " << twistAngle_best << " " << score_best_twist << "\n";
        points_err_out.flush();

        processNormalKeys('s', lastx_R, lasty_R);
    }
    points_err_out.close();
    exit(0);
}




glutMainLoop ();
}