예제 #1
0
void GameOver::draw(struct MyMesh* mesh, VSShaderLib& shader, GLint& pvm_uniformId, GLint& vm_uniformId, GLint& normal_uniformId, GLint& texMode_uniformId, int *objId){
	*objId=11;
	GLint loc;
			// send the material
			loc = glGetUniformLocation(shader.getProgramIndex(), "mat.ambient");
			glUniform4fv(loc, 1, mesh[*objId].mat.ambient);
			loc = glGetUniformLocation(shader.getProgramIndex(), "mat.diffuse");
			glUniform4fv(loc, 1, mesh[*objId].mat.diffuse);
			loc = glGetUniformLocation(shader.getProgramIndex(), "mat.specular");
			glUniform4fv(loc, 1, mesh[*objId].mat.specular);
			loc = glGetUniformLocation(shader.getProgramIndex(), "mat.shininess");
			glUniform1f(loc,mesh[*objId].mat.shininess);
			pushMatrix(MODEL);
			translate(MODEL, -7.5f, 0.0f, 15.0f);
			scale(MODEL, 15.0f, 0.0f, 30.0f);
			rotate(MODEL, 90.0, 0.0f, 0.0f, 1.0f);
			rotate(MODEL, 180.0, 1.0f, 0.0f, 0.0f);

			// send matrices to OGL
			computeDerivedMatrix(PROJ_VIEW_MODEL);
			glUniformMatrix4fv(vm_uniformId, 1, GL_FALSE, mCompMatrix[VIEW_MODEL]);
			glUniformMatrix4fv(pvm_uniformId, 1, GL_FALSE, mCompMatrix[PROJ_VIEW_MODEL]);
			computeNormalMatrix3x3();
			glUniformMatrix3fv(normal_uniformId, 1, GL_FALSE, mNormal3x3);

			// Render mesh
			glUniform1i(texMode_uniformId, 4); // apenas o texel

			glBindVertexArray(mesh[*objId].vao);
			glDrawElements(mesh[*objId].type,mesh[*objId].numIndexes, GL_UNSIGNED_INT, 0);
			glBindVertexArray(0);

			popMatrix(MODEL);
}
예제 #2
0
파일: main.cpp 프로젝트: pfac/CG-PI
// ------------------------------------------------------------
//
// Render stuff
//
void renderScene(void) {

	glClear(
		GL_COLOR_BUFFER_BIT |
		GL_DEPTH_BUFFER_BIT )
		;

	vsml->loadIdentity(VSMathLib::MODEL);
	vsml->loadIdentity(VSMathLib::VIEW);
	vsml->lookAt(camX, camY, camZ, 0,0,0, 0,1,0);
	//cam->lookAt(vsml);
	
	//std::cout
	//	<<	'('
	//	<<	camX
	//	<<	','
	//	<<	camY
	//	<<	','
	//	<<	camZ
	//	<<	')'
	//	<<	std::endl
	//	<<	*cam
	//	<<	std::endl;
	{

		// set the shader to render models
		//glUseProgram(shaders[shader_group_now][shader_now].getProgramIndex());
		glUseProgram(shader1.getProgramIndex());
		// start counting primitives
		// render array of models
		for (float x = -2.0f ; x < 3.0f ; x += 2.0f) {
			for (float z = -2.0f; z < 3.0f ; z += 2.0f) {
				vsml->pushMatrix(VSMathLib::MODEL);
				vsml->translate(VSMathLib::MODEL, x, 0.0f, z);
				if ( x < -1.0f || x > 1.0f || z < -1.0f || z > 1.0f )
					teapot.render();
				vsml->popMatrix(VSMathLib::MODEL);
			}
		}
		// stop counting primitives

		{
			//glUseProgram(player.shaders[shader_group_now].getProgramIndex());
			glUseProgram(shader2.getProgramIndex());
			vsml->pushMatrix(VSMathLib::MODEL);
			//vsml->translate(VSMathLib::MODEL, player.position.x, player.position.y, player.position.z);
			//vsml->translate(VSMathLib::MODEL, 0, 0, 0);
			teapot.render();
			vsml->popMatrix(VSMathLib::MODEL);
		}

		//{
		//	player->draw(vsml);
		//}
	}

	glutSwapBuffers();
}
void Renderer::Init(){
	glCullFace(GL_BACK);
	shader.init();
	shader.loadShader(VSShaderLib::VERTEX_SHADER, "simple.vert");
	shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "simple.frag");
	shader.prepareProgram();
	cout << shader.getAllInfoLogs() << "\n";
	//SetUpLightning();
}
예제 #4
0
파일: HudMessage.cpp 프로젝트: megax37/AVT
void HudMessage::render(VSShaderLib &shader, GLint &pvm_uniformId, GLint &vm_uniformId, GLint &normal_uniformId, GLint &texMode_uniformId) {

	GLuint loc;

	for (int i = 0; i < meshLength; ++i) {

		if (mesh[i].mat.texCount != 0) {
			glActiveTexture(GL_TEXTURE0);
			glBindTexture(GL_TEXTURE_2D, mesh[i].texUnits[messageType]);
			glUniform1i(texMode_uniformId, 2);
		}
		for (int j = 0; j < mesh[i].vaoElements; j++) {
			// send the material
			loc = glGetUniformLocation(shader.getProgramIndex(), "mat.ambient");
			glUniform4fv(loc, 1, mesh[i].mat.ambient);
			loc = glGetUniformLocation(shader.getProgramIndex(), "mat.diffuse");
			glUniform4fv(loc, 1, mesh[i].mat.diffuse);
			loc = glGetUniformLocation(shader.getProgramIndex(), "mat.specular");
			glUniform4fv(loc, 1, mesh[i].mat.specular);
			loc = glGetUniformLocation(shader.getProgramIndex(), "mat.shininess");
			glUniform1f(loc, mesh[i].mat.shininess);
			pushMatrix(MODEL);
			translate(MODEL, current_position[0], current_position[1], current_position[2]);
			if (i == 0) {
				scale(MODEL, 4.0f, 4.0f, 0.0f);
			}
			// send matrices to OGL
			computeDerivedMatrix(PROJ_VIEW_MODEL);
			glUniformMatrix4fv(vm_uniformId, 1, GL_FALSE, mCompMatrix[VIEW_MODEL]);
			glUniformMatrix4fv(pvm_uniformId, 1, GL_FALSE, mCompMatrix[PROJ_VIEW_MODEL]);
			computeNormalMatrix3x3();
			glUniformMatrix3fv(normal_uniformId, 1, GL_FALSE, mNormal3x3);

			// Render mesh
			glBindVertexArray(mesh[i].vao);
			glDrawElements(mesh[i].type, mesh[i].numIndexes, GL_UNSIGNED_INT, 0);
			glBindVertexArray(0);

			popMatrix(MODEL);
		}
		glUniform1i(texMode_uniformId, 0);
	}
	glBindTexture(GL_TEXTURE_2D, 0);
}
void Renderer::doRender(){
	SetUpCamera();
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	GLfloat qaLightPosition[]	= {.5, 1, 0.0, 1.0};
	glLightfv(GL_LIGHT0, GL_POSITION, qaLightPosition);

	// Set material properties
	GLfloat qaBlack[] = {0.0, 0.0, 0.0, 1.0};
	GLfloat qaGreen[] = {0.0, 1.0, 0.0, 1.0};
	GLfloat qaWhite[] = {1.0, 1.0, 1.0, 1.0};
	glMaterialfv(GL_FRONT, GL_AMBIENT, qaGreen);
	glMaterialfv(GL_FRONT, GL_DIFFUSE, qaGreen);
	glMaterialfv(GL_FRONT, GL_SPECULAR, qaWhite);
	glMaterialf(GL_FRONT, GL_SHININESS, 60.0);
	DrawAxes();
	// Draw square with many little squares
	glPushMatrix();
	//glTranslatef(0, 0, 5);
	//glRotated(angle, 0, 1,0);
	//angle += 0.01;

	//path.push_back(position);

	

	if(GetKeyState('A')& 0x80){
		direction.x -= 0.001;
	}
	 if(GetKeyState('D')& 0x80){
		direction.x += 0.001;
	}
	
	position.x += cos(direction.x)*speed;
	position.y += sin(direction.x)*speed;

	glUseProgram(shader.getProgramIndex());
	//drawBox();
	//
	glLineWidth(10.0);
	//glBegin(GL_LINE_STRIP);{
	glPushMatrix();
		//for(vector<Vector5>::iterator item =  path.begin(); item !=  path.end(); item++){
			glTranslated(position.x,position.y, position.z);
			GLUquadric *obj = gluNewQuadric();
			gluSphere(obj, 0.1, 20,20);
			//glVertex3d(item->x, item->y, item->z);
		//}
		glPopMatrix();
	//}glEnd();

	//
	
	glPopMatrix();
	
}
예제 #6
0
void Particles::render(GLint texture, struct MyMesh mesh, GLint pvm_uniformId, GLint vm_uniformId, GLint normal_uniformId, VSShaderLib shader, float angle)
{
	float particle_color[4];
	// draw fireworks particles

	glActiveTexture(GL_TEXTURE0);
	glBindTexture(GL_TEXTURE_2D, texture);
	glActiveTexture(GL_TEXTURE1);
	glBindTexture(GL_TEXTURE_2D, texture);
	glDisable(GL_DEPTH_TEST); /* não interessa o z-buffer: as partículas podem ser desenhadas umas por cima das outras sem problemas de ordenação */

	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE);

	for (int i = 0; i < MAX_PARTICULAS; i++)
	{
		if (particula[i].life > 0.0f) /* só desenha as que ainda estão vivas */
		{

			/* A vida da partícula representa o canal alpha da cor. Como o blend está activo a cor final é a soma da cor rgb do fragmento multiplicada pelo
			alpha com a cor do pixel destino */

			particle_color[0] = particula[i].r;
			particle_color[1] = particula[i].g;
			particle_color[2] = particula[i].b;
			particle_color[3] = particula[i].life;

			// send the material - diffuse color modulated with texture
			GLint loc = glGetUniformLocation(shader.getProgramIndex(), "mat.diffuse");
			glUniform4fv(loc, 1, particle_color);

			pushMatrix(MODEL);
			
			translate(MODEL, particula[i].x, particula[i].y, particula[i].z);
			rotate(MODEL, angle, 0, 1, 0);
			scale(MODEL, 0.3, 0.3, 0.3);
			//rotate(MODEL, 180, 0, 0, 1);

			// send matrices to OGL
			computeDerivedMatrix(PROJ_VIEW_MODEL);
			glUniformMatrix4fv(vm_uniformId, 1, GL_FALSE, mCompMatrix[VIEW_MODEL]);
			glUniformMatrix4fv(pvm_uniformId, 1, GL_FALSE, mCompMatrix[PROJ_VIEW_MODEL]);
			computeNormalMatrix3x3();
			glUniformMatrix3fv(normal_uniformId, 1, GL_FALSE, mNormal3x3);

			glBindVertexArray(mesh.vao);
			glDrawElements(mesh.type, mesh.numIndexes, GL_UNSIGNED_INT, 0);
			popMatrix(MODEL);
		}
	}
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glBindVertexArray(0);
	glBindTexture(GL_TEXTURE_2D, 0);
	glEnable(GL_DEPTH_TEST);
}
예제 #7
0
파일: simple.cpp 프로젝트: hzhamad/CG-MV
GLuint setupShaders() {

// ADD STUFF HERE
	
	shader.init();
	shader.loadShader(VSShaderLib::VERTEX_SHADER, "anim.vert");
	shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "anim.frag");
	//shader.setProgramOutput(0, "colorFS");
	shader.setVertexAttribName(VSShaderLib::VERTEX_COORD_ATTRIB, "position");
	shader.prepareProgram();
	glUseProgram(shader.getProgramIndex());
	return 1;

	char *vs = NULL,*fs = NULL,*fs2 = NULL;

	v = glCreateShader(GL_VERTEX_SHADER);
	f = glCreateShader(GL_FRAGMENT_SHADER);
	f2 = glCreateShader(GL_FRAGMENT_SHADER);

	vs = textFileRead("anim.vert");
	fs = textFileRead("anim.frag");

	const char * vv = vs;
	const char * ff = fs;

	glShaderSource(v, 1, &vv,NULL);
	glShaderSource(f, 1, &ff,NULL);

	free(vs);free(fs);

	glCompileShader(v);
	glCompileShader(f);

	printShaderInfoLog(v);
	printShaderInfoLog(f);
	printShaderInfoLog(f2);

	p = glCreateProgram();
	glAttachShader(p,v);
	glAttachShader(p,f);

	glLinkProgram(p);
	//printProgramInfoLog(p);

	glUseProgram(p);
	GLuint loc = glGetUniformLocation(p,"time");
	return 0;
}
예제 #8
0
void Billboard::draw(struct MyMesh* mesh, VSShaderLib& shader, GLint& pvm_uniformId, GLint& vm_uniformId, GLint& normal_uniformId, GLint& texMode_uniformId, int *objId){
		
	float modelview[16];
	float pos[3];
	//pos[0] = getPosX(); pos[1] = getPosY(); pos[2] = getPosZ();
	float cam[3];
	cam[0] = getCamX(); cam[1] = getCamY(); cam[2] = getCamZ();
	GLint loc;

	//Draw trees billboards

    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  
    glUniform1i(texMode_uniformId, 1); // draw textured quads

        for(int j = 1; j < 3; j++) {
            pushMatrix(MODEL);
            translate(MODEL,-7.0,0.0,-10.0+j*5);

           pos[0] = -7.0; pos[1] = 0; pos[2] = -10.0+j*5;

            if (getType() == 2){
                l3dBillboardSphericalBegin(cam,pos);
			}
            else if (getType() == 3){
                l3dBillboardCylindricalBegin(cam,pos);
			}
    
            *objId=17;  //quad for tree

            //diffuse and ambient color are not used in the tree quads
            loc = glGetUniformLocation(shader.getProgramIndex(), "mat.specular");
            glUniform4fv(loc, 1, mesh[*objId].mat.specular);
            loc = glGetUniformLocation(shader.getProgramIndex(), "mat.shininess");
            glUniform1f(loc,mesh[*objId].mat.shininess);
    
            pushMatrix(MODEL);
            translate(MODEL, 0.0, 3.0, 0.0f);
  
            // send matrices to OGL
            if (getType() == 0 || getType() == 1) {     //Cheating matrix reset billboard techniques
                computeDerivedMatrix(VIEW_MODEL);
                memcpy(modelview, mCompMatrix[VIEW_MODEL], sizeof(float) * 16);  //save VIEW_MODEL in modelview matrix

                //reset VIEW_MODEL
                if(getType()==0){
					BillboardCheatSphericalBegin();   
				}
                else{
					BillboardCheatCylindricalBegin();
				}

                computeDerivedMatrix_PVM(); // calculate PROJ_VIEW_MODEL
            }
            else computeDerivedMatrix(PROJ_VIEW_MODEL);

			glUniform1i(texMode_uniformId, 13);

            glUniformMatrix4fv(vm_uniformId, 1, GL_FALSE, mCompMatrix[VIEW_MODEL]);
            glUniformMatrix4fv(pvm_uniformId, 1, GL_FALSE, mCompMatrix[PROJ_VIEW_MODEL]);
            computeNormalMatrix3x3();
            glUniformMatrix3fv(normal_uniformId, 1, GL_FALSE, mNormal3x3);
            glBindVertexArray(mesh[*objId].vao);
            glDrawElements(mesh[*objId].type,mesh[*objId].numIndexes, GL_UNSIGNED_INT, 0);
            popMatrix(MODEL);

            popMatrix(MODEL);
        }
		glDisable(GL_BLEND);
		
}
예제 #9
0
파일: main.cpp 프로젝트: pfac/CG-PI
// --------------------------------------------------------
//
// Shader Stuff
//
GLuint setupShaders() {

	//// Shader for fonts and models
	//shaders[0][0].init();
	///*shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert");
	//shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");*/
	//shaders[0][0].loadShader(
	//	VSShaderLib::VERTEX_SHADER,
	//	"../shaders/light/direct/diffuse.vert.glsl")
	//	;
	//shaders[0][0].loadShader(
	//	VSShaderLib::FRAGMENT_SHADER,
	//	"../shaders/light/direct/diffuse.frag.glsl")
	//	;

	//// set semantics for the shader variables
	//shaders[0][0].setProgramOutput( 0 , "color" );
	//shaders[0][0].setVertexAttribName(
	//	VSShaderLib::VERTEX_COORD_ATTRIB,
	//	"position")
	//	;
	////shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord");
	//shaders[0][0].setVertexAttribName(
	//	VSShaderLib::NORMAL_ATTRIB,
	//	"normal")
	//	;

	//shaders[0][0].prepareProgram();

	//VSGLInfoLib::getProgramInfo(shaders[0][0].getProgramIndex());
	//printf("%s\n", shaders[0][0].getAllInfoLogs().c_str());

	////	uniforms
	////float lpos[4] = { 1.0 , 0.0 , 1.0 , 0.0 };
	////shaders[0].setUniform( "lightPos" , lpos );
	//{
	//	float ldir[3] = { 1.0 , 0.0 , 0.0 };
	//	float ldif[3] = { 1.0 , 0.0 , 0.0 };
	//	shaders[0][0].setUniform( "light_dir" , ldir );
	//	shaders[0][0].setUniform( "diffuse" , ldif );
	//}








	////	shader#2
	//// Shader for fonts and models
	//shaders[0][1].init();
	///*shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert");
	//shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");*/
	//shaders[0][1].loadShader(
	//	VSShaderLib::VERTEX_SHADER,
	//	"../shaders/light/direct/difamb.vert.glsl")
	//	;
	//shaders[0][1].loadShader(
	//	VSShaderLib::FRAGMENT_SHADER,
	//	"../shaders/light/direct/difamb.frag.glsl")
	//	;

	//// set semantics for the shader variables
	//shaders[0][1].setProgramOutput( 0 , "color" );
	//shaders[0][1].setVertexAttribName(
	//	VSShaderLib::VERTEX_COORD_ATTRIB,
	//	"position")
	//	;
	////shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord");
	//shaders[0][1].setVertexAttribName(
	//	VSShaderLib::NORMAL_ATTRIB,
	//	"normal")
	//	;

	//shaders[0][1].prepareProgram();

	//VSGLInfoLib::getProgramInfo(shaders[0][1].getProgramIndex());
	//printf("%s\n", shaders[0][1].getAllInfoLogs().c_str());

	////	uniforms
	//{
	//	float ldir[3] = { 1.0f , 0.0f , 0.0f };
	//	float ldif[3] = { 1.0f , 0.0f , 0.0f };
	//	float lamb[3] = { 0.3f , 0.0f , 0.0f };
	//	shaders[0][1].setUniform( "light_dir" , ldir );
	//	shaders[0][1].setUniform( "diffuse" , ldif );
	//	shaders[0][1].setUniform( "ambient" , lamb );
	//}
	//







	////	shader#3
	//// Shader for fonts and models
	//shaders[0][2].init();
	///*shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert");
	//shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");*/
	//shaders[0][2].loadShader(
	//	VSShaderLib::VERTEX_SHADER,
	//	"../shaders/light/direct/gouraud.vert.glsl")
	//	;
	//shaders[0][2].loadShader(
	//	VSShaderLib::FRAGMENT_SHADER,
	//	"../shaders/light/direct/gouraud.frag.glsl")
	//	;

	//// set semantics for the shader variables
	//shaders[0][2].setProgramOutput( 0 , "color" );
	//shaders[0][2].setVertexAttribName(
	//	VSShaderLib::VERTEX_COORD_ATTRIB,
	//	"position")
	//	;
	////shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord");
	//shaders[0][2].setVertexAttribName(
	//	VSShaderLib::NORMAL_ATTRIB,
	//	"normal")
	//	;

	//shaders[0][2].prepareProgram();

	//VSGLInfoLib::getProgramInfo(shaders[0][2].getProgramIndex());
	//printf("%s\n", shaders[0][2].getAllInfoLogs().c_str());

	////	uniforms
	//{
	//	float ldir[3] = { 1.0f , 0.0f , 0.0f };
	//	float ldif[3] = { 1.0f , 0.0f , 0.0f };
	//	float lamb[3] = { 0.3f , 0.0f , 0.0f };
	//	float lspc[3] = { 1.0f , 1.0f , 1.0f };
	//	shaders[0][2].setUniform( "light_dir" , ldir );
	//	shaders[0][2].setUniform( "diffuse" , ldif );
	//	shaders[0][2].setUniform( "ambient" , lamb );
	//	shaders[0][2].setUniform( "specular" , lspc );
	//	shaders[0][2].setUniform( "shininess" , 100.0f );
	//}




	////	shader#4
	//// Shader for fonts and models
	//shaders[0][3].init();
	///*shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert");
	//shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");*/
	//shaders[0][3].loadShader(
	//	VSShaderLib::VERTEX_SHADER,
	//	"../shaders/light/direct/phong.vert.glsl")
	//	;
	//shaders[0][3].loadShader(
	//	VSShaderLib::FRAGMENT_SHADER,
	//	"../shaders/light/direct/phong.frag.glsl")
	//	;

	//// set semantics for the shader variables
	//shaders[0][3].setProgramOutput( 0 , "color" );
	//shaders[0][3].setVertexAttribName(
	//	VSShaderLib::VERTEX_COORD_ATTRIB,
	//	"position")
	//	;
	////shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord");
	//shaders[0][3].setVertexAttribName(
	//	VSShaderLib::NORMAL_ATTRIB,
	//	"normal")
	//	;

	//shaders[0][3].prepareProgram();

	//VSGLInfoLib::getProgramInfo(shaders[0][3].getProgramIndex());
	//printf("%s\n", shaders[0][3].getAllInfoLogs().c_str());

	////	uniforms
	//{
	//	float ldir[3] = { 1.0f , 0.0f , 0.0f };
	//	float ldif[3] = { 1.0f , 0.0f , 0.0f };
	//	float lamb[3] = { 0.3f , 0.0f , 0.0f };
	//	float lspc[3] = { 1.0f , 1.0f , 1.0f };
	//	shaders[0][3].setUniform( "light_dir" , ldir );
	//	shaders[0][3].setUniform( "diffuse" , ldif );
	//	shaders[0][3].setUniform( "ambient" , lamb );
	//	shaders[0][3].setUniform( "specular" , lspc );
	//	shaders[0][3].setUniform( "shininess" , 100.0f );
	//}





	////	shader#5
	//// Shader for fonts and models
	//shaders[1][3].init();
	///*shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert");
	//shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");*/
	//shaders[1][3].loadShader(
	//	VSShaderLib::VERTEX_SHADER,
	//	"../shaders/light/point/phong.vert.glsl")
	//	;
	//shaders[1][3].loadShader(
	//	VSShaderLib::FRAGMENT_SHADER,
	//	"../shaders/light/point/phong.frag.glsl")
	//	;

	//// set semantics for the shader variables
	//shaders[1][3].setProgramOutput( 0 , "color" );
	//shaders[1][3].setVertexAttribName(
	//	VSShaderLib::VERTEX_COORD_ATTRIB,
	//	"position")
	//	;
	////shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord");
	//shaders[1][3].setVertexAttribName(
	//	VSShaderLib::NORMAL_ATTRIB,
	//	"normal")
	//	;

	//shaders[1][3].prepareProgram();

	//VSGLInfoLib::getProgramInfo(shaders[1][3].getProgramIndex());
	//printf("%s\n", shaders[1][3].getAllInfoLogs().c_str());

	////	uniforms
	//{
	//	float lpos[4] = { 30.0 , 5.0 , 0.0 , 1.0 };
	//	float ldif[3] = { 1.0 , 0.0 , 0.0 };
	//	//float lamb[3] = { 0.3 , 0.0 , 0.0 };
	//	float lspc[3] = { 1.0 , 1.0 , 1.0 };
	//	shaders[1][3].setUniform( "lightPosition" , lpos );
	//	shaders[1][3].setUniform( "diffuse" , ldif );
	//	//shaders[1][3].setUniform( "ambient" , lamb );
	//	shaders[1][3].setUniform( "specular" , lspc );
	//	shaders[1][3].setUniform( "shininess" , 100.0f );
	//}





	////	shader#6
	//// Shader for fonts and models
	//shaders[2][3].init();
	///*shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert");
	//shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");*/
	//shaders[2][3].loadShader(
	//	VSShaderLib::VERTEX_SHADER,
	//	"../shaders/light/spot/phong.vert.glsl")
	//	;
	//shaders[2][3].loadShader(
	//	VSShaderLib::FRAGMENT_SHADER,
	//	"../shaders/light/spot/phong.frag.glsl")
	//	;

	//// set semantics for the shader variables
	//shaders[2][3].setProgramOutput( 0 , "color" );
	//shaders[2][3].setVertexAttribName(
	//	VSShaderLib::VERTEX_COORD_ATTRIB,
	//	"position")
	//	;
	////shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord");
	//shaders[2][3].setVertexAttribName(
	//	VSShaderLib::NORMAL_ATTRIB,
	//	"normal")
	//	;

	//shaders[2][3].prepareProgram();

	//VSGLInfoLib::getProgramInfo(shaders[2][3].getProgramIndex());
	//printf("%s\n", shaders[2][3].getAllInfoLogs().c_str());

	////	uniforms
	//{
	//	float spos[4] = { 0.0 , 1.0 , 0.0 , 1.0 };
	//	float sdir[3] = { 1.0 , -1.0 , 0.0 };
	//	float ldif[3] = { 1.0 , 0.0 , 0.0 };
	//	//float lamb[3] = { 0.3 , 0.0 , 0.0 };
	//	float lspc[3] = { 1.0 , 1.0 , 1.0 };
	//	shaders[2][3].setUniform( "spotPosition" , spos );
	//	shaders[2][3].setUniform( "spotDirection" , sdir );
	//	shaders[2][3].setUniform( "spotLimitAngle" , blaf::deg2rad(7.5f) );
	//	shaders[2][3].setUniform( "diffuse" , ldif );
	//	//shaders[1][3].setUniform( "ambient" , lamb );
	//	shaders[2][3].setUniform( "specular" , lspc );
	//	shaders[2][3].setUniform( "shininess" , 100.0f );
	//}





	/*
	//	player shader#1
	// Shader for fonts and models
	player.shaders[0].init();
	//shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert");
	//shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");
	player.shaders[0].loadShader(
		VSShaderLib::VERTEX_SHADER,
		"../shaders/light/direct/phong.vert.glsl")
		;
	player.shaders[0].loadShader(
		VSShaderLib::FRAGMENT_SHADER,
		"../shaders/light/direct/phong.frag.glsl")
		;

	// set semantics for the shader variables
	player.shaders[0].setProgramOutput( 0 , "color" );
	player.shaders[0].setVertexAttribName(
		VSShaderLib::VERTEX_COORD_ATTRIB,
		"position")
		;
	//shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord");
	player.shaders[0].setVertexAttribName(
		VSShaderLib::NORMAL_ATTRIB,
		"normal")
		;

	player.shaders[0].prepareProgram();

	VSGLInfoLib::getProgramInfo(player.shaders[0].getProgramIndex());
	printf("%s\n", player.shaders[0].getAllInfoLogs().c_str());

	//	uniforms
	{
		float ldir[3] = { 1.0 , 0.0 , 0.0 };
		float ldif[3] = { 0.0 , 1.0 , 0.0 };
		//float lamb[3] = { 0.3 , 0.0 , 0.0 };
		float lspc[3] = { 1.0 , 1.0 , 1.0 };
		player.shaders[0].setUniform( "light_dir" , ldir );
		player.shaders[0].setUniform( "diffuse" , ldif );
		//shaders[0][3].setUniform( "ambient" , lamb );
		player.shaders[0].setUniform( "specular" , lspc );
		player.shaders[0].setUniform( "shininess" , 100.0f );
	}




	//	player shader#2
	// Shader for fonts and models
	player.shaders[1].init();
	//shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert");
	//shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");
	player.shaders[1].loadShader(
		VSShaderLib::VERTEX_SHADER,
		"../shaders/light/point/phong.vert.glsl")
		;
	player.shaders[1].loadShader(
		VSShaderLib::FRAGMENT_SHADER,
		"../shaders/light/point/phong.frag.glsl")
		;

	// set semantics for the shader variables
	player.shaders[1].setProgramOutput( 0 , "color" );
	player.shaders[1].setVertexAttribName(
		VSShaderLib::VERTEX_COORD_ATTRIB,
		"position")
		;
	//shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord");
	player.shaders[1].setVertexAttribName(
		VSShaderLib::NORMAL_ATTRIB,
		"normal")
		;

	player.shaders[1].prepareProgram();

	VSGLInfoLib::getProgramInfo(player.shaders[1].getProgramIndex());
	printf("%s\n", player.shaders[1].getAllInfoLogs().c_str());

	//	uniforms
	{
		float lpos[4] = { 30.0 , 5.0 , 0.0 , 1.0 };
		float ldif[3] = { 0.0 , 1.0 , 0.0 };
		//float lamb[3] = { 0.3 , 0.0 , 0.0 };
		float lspc[3] = { 1.0 , 1.0 , 1.0 };
		player.shaders[1].setUniform( "lightPosition" , lpos );
		player.shaders[1].setUniform( "diffuse" , ldif );
		//shaders[1][3].setUniform( "ambient" , lamb );
		player.shaders[1].setUniform( "specular" , lspc );
		player.shaders[1].setUniform( "shininess" , 100.0f );
	}





	//	player shader#3
	// Shader for fonts and models
	player.shaders[2].init();
	//shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert");
	//shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");
	player.shaders[2].loadShader(
		VSShaderLib::VERTEX_SHADER,
		"../shaders/light/spot/phong.vert.glsl")
		;
	player.shaders[2].loadShader(
		VSShaderLib::FRAGMENT_SHADER,
		"../shaders/light/spot/phong.frag.glsl")
		;

	// set semantics for the shader variables
	player.shaders[2].setProgramOutput( 0 , "color" );
	player.shaders[2].setVertexAttribName(
		VSShaderLib::VERTEX_COORD_ATTRIB,
		"position")
		;
	//shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord");
	player.shaders[2].setVertexAttribName(
		VSShaderLib::NORMAL_ATTRIB,
		"normal")
		;

	player.shaders[2].prepareProgram();

	VSGLInfoLib::getProgramInfo(player.shaders[2].getProgramIndex());
	printf("%s\n", player.shaders[2].getAllInfoLogs().c_str());

	//	uniforms
	{
		float spos[4] = { 0.0 , 1.0 , 0.0 , 1.0 };
		float sdir[3] = { 1.0 , -1.0 , 0.0 };
		float ldif[3] = { 0.0 , 1.0 , 0.0 };
		//float lamb[3] = { 0.3 , 0.0 , 0.0 };
		float lspc[3] = { 1.0 , 1.0 , 1.0 };
		player.shaders[2].setUniform( "spotPosition" , spos );
		player.shaders[2].setUniform( "spotDirection" , sdir );
		player.shaders[2].setUniform( "spotLimitAngle" , DEG2RAD(7.5f) );
		player.shaders[2].setUniform( "diffuse" , ldif );
		//shaders[1][3].setUniform( "ambient" , lamb );
		player.shaders[2].setUniform( "specular" , lspc );
		player.shaders[2].setUniform( "shininess" , 100.0f );
	}
	*/







	//	shader1
	shader1.init();
	shader1.loadShader(
		VSShaderLib::VERTEX_SHADER,
		"../shaders/light/point/phong.vert.glsl")
		;
	shader1.loadShader(
		VSShaderLib::FRAGMENT_SHADER,
		"../shaders/light/point/phong.frag.glsl")
		;

	// set semantics for the shader variables
	shader1.setProgramOutput( 0 , "color" );
	shader1.setVertexAttribName(
		VSShaderLib::VERTEX_COORD_ATTRIB,
		"position")
		;
	shader1.setVertexAttribName(
		VSShaderLib::NORMAL_ATTRIB,
		"normal")
		;

	shader1.prepareProgram();

	VSGLInfoLib::getProgramInfo(shader1.getProgramIndex());
	printf("%s\n", shader1.getAllInfoLogs().c_str());

	//	uniforms
	{
		float lpos[4] = { 30.0 , 5.0 , 0.0 , 1.0 };
		float ldif[3] = { 1.0 , 0.0 , 0.0 };
		//float lamb[3] = { 0.3 , 0.0 , 0.0 };
		float lspc[3] = { 1.0 , 1.0 , 1.0 };
		shader1.setUniform( "lightPosition" , lpos );
		shader1.setUniform( "diffuse" , ldif );
		//shader1.setUniform( "ambient" , lamb );
		shader1.setUniform( "specular" , lspc );
		shader1.setUniform( "shininess" , 100.0f );
	}








	//	shader2
	shader2.init();
	shader2.loadShader(
		VSShaderLib::VERTEX_SHADER,
		"../shaders/light/point/phong.vert.glsl")
		;
	shader2.loadShader(
		VSShaderLib::FRAGMENT_SHADER,
		"../shaders/light/point/phong.frag.glsl")
		;

	// set semantics for the shader variables
	shader2.setProgramOutput( 0 , "color" );
	shader2.setVertexAttribName(
		VSShaderLib::VERTEX_COORD_ATTRIB,
		"position")
		;
	//shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord");
	shader2.setVertexAttribName(
		VSShaderLib::NORMAL_ATTRIB,
		"normal")
		;

	shader2.prepareProgram();

	VSGLInfoLib::getProgramInfo(shader2.getProgramIndex());
	printf("%s\n", shader2.getAllInfoLogs().c_str());

	//	uniforms
	{
		float lpos[4] = { 30.0 , 5.0 , 0.0 , 1.0 };
		float ldif[3] = { 0.0 , 1.0 , 0.0 };
		//float lamb[3] = { 0.3 , 0.0 , 0.0 };
		float lspc[3] = { 1.0 , 1.0 , 1.0 };
		shader2.setUniform( "lightPosition" , lpos );
		shader2.setUniform( "diffuse" , ldif );
		//shader2.setUniform( "ambient" , lamb );
		shader2.setUniform( "specular" , lspc );
		shader2.setUniform( "shininess" , 100.0f );
	}







	




	return(1);
}