Ejemplo n.º 1
0
void renderScene()
{
	// Set color and depth clear value
	glClearDepth(1.f);
	glClearColor(0.4f, 0.4f, 0.4f, 0.4f);
	
	// Enable Z-buffer read and write
	glEnable(GL_DEPTH_TEST);
	glDepthMask(GL_TRUE);
		
	// Clear color and depth buffer
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
		
	//variables for 3D render shader
	if(GL20Support)
		glUseProgram(shaderProg);
	else
		glUseProgramObjectARB(shaderProg);
	setShaderVariables(shaderProg);
		
	//Draw everything
	/*glPushMatrix();
	setShaderVariables(shaderProg);
	drawExampleCube();
	glPopMatrix();*/
	drawShapes();

	//Draw the UI (does not use lighting)
	if(GL20Support)
		glUseProgram(noLightProg);
	else
		glUseProgramObjectARB(noLightProg);
	setShaderVariables(noLightProg);
	draw_xy_grid(20,20,1.0,1.0);

	glPushMatrix();
	glLoadIdentity();
	glMatrixMode(GL_PROJECTION);
	glPushMatrix();
	glLoadIdentity();
	gluOrtho2D(0.0,currentRes[0],0.0,currentRes[1]);
	setShaderVariables(noLightProg);
	drawButtons();
	glPopMatrix();
	glMatrixMode(GL_MODELVIEW);
	glPopMatrix();
	
	//copy buffer to texture
	/*glBindTexture(GL_TEXTURE_2D,textureTarget);
	glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, currentRes[0], currentRes[1], 0);
	texRender.useProgram();
		
	//variables for texture shader
	//texture unit id is handled in ShowTexture
	setShaderVariables(texRender.getProgram());
		
	//sets up a few shader variables and draws the texture on a full view quad
	texRender.render(textureTarget, currentRes, currentRes);*/
}
Ejemplo n.º 2
0
	GLBox()
	{
		App = new sf::Window(sf::VideoMode(RES_WIDTH, RES_HEIGHT, 32), "Bubbles!");

		// Setting up shaders
		FILE * logFile;
		logFile = fopen("log text", "wb");
		if(NULL == logFile)
		{
			printf("Unable to open log file. Exiting...\n");
			exit(2);
		}
		__glewInit(logFile);

		ShaderManager shaders = ShaderManager(logFile);
		char const * bubbleDrawVert = "BubbleShaders/bubbleRender3dModel.vert";
		char const * bubbleDrawFrag = "BubbleShaders/bubbleRender3dModel.frag";
		bubbleShaderProg = shaders.buildShaderProgram(&bubbleDrawVert, &bubbleDrawFrag, 1, 1);

		Clock = sf::Clock();
		mode = BUBBLE_MODE;
		gfxinit();

		while (App->IsOpened())
		{
			App->SetActive();
			handleEvents();
			setShader();
			setShaderVariables(bubbleShaderProg);
			display();
			App->Display();
		}

		fclose(logFile);
	}
Ejemplo n.º 3
0
void drawShapes()
{
	for (std::list<Shape>::iterator it = listOfShapes.begin(); it != listOfShapes.end(); it++)
	{
		glPushMatrix();
		unsigned int id = it->shapeId;
		vec3 transV = it->trans.trans;
		vec3 rotV = it->rot.trans;
		vec3 scaleV = it->scale.trans;
		vec3 color = it->color;
		glVertexAttrib3f(1,color[0],color[1],color[2]);
		glTranslatef(transV[0],transV[1],transV[2]);
		glRotatef(rotV[0],1.0,0.0,0.0);
		glRotatef(rotV[1],0.0,1.0,0.0);
		glRotatef(rotV[2],0.0,0.0,1.0);
		glScalef(scaleV[0],scaleV[1],scaleV[2]);
		glPushName(id);
		setShaderVariables(shaderProg);
		it->drawShape();
		glPopName();
		if(id == selected)
		{
			if(GL20Support)
				glUseProgram(noLightProg);
			else
				glUseProgramObjectARB(noLightProg);
			setShaderVariables(noLightProg);
			drawSelectCube();
			if(GL20Support)
				glUseProgram(shaderProg);
			else
				glUseProgramObjectARB(shaderProg);
		}
		glPopMatrix();
	}
}
Ejemplo n.º 4
0
	void display()
	{
		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
		glMatrixMode(GL_MODELVIEW);
		glLoadIdentity();
		gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
		setShader();
		setShaderVariables(bubbleShaderProg);
		switch (mode) {
			case BUBBLE_MODE:
				glClearColor(0.0f, 0.15f, 0.25f, 0.0f);
				for(int i = 0; i < NUM_BUBBLES; i++) {
					bubbles[i].draw();
				}
				break;
		}
		glFlush();
	}
	GLBox()
	{
		App = new sf::Window(sf::VideoMode(RESOLUTION, RESOLUTION, 32), "Spherio");

		glEnable(GL_LIGHTING);
		
		cameraLookMode = false;
		lastPos[0] = -1;
		lastPos[1] = -1;
		cameraTheta = tiltX = tiltZ = 0;
		cameraPhi = 50;
		buttonPressed[0] = buttonPressed[1] = buttonPressed[2] = buttonPressed[3] = false;
		gfxinit();
		
		double a[] = {20, 0, -20};
		double b[] = {20, 10, -20};

		double block1Color[3] = {1, 0, 0};
		double block1Center[3] = {0, 0, 0};
		level[0] = Block(block1Color, block1Center, 4, 1, 4, 0, 0);
		double ballColor[3] = {0,1,1};
		double ballCenter[3] = {0,3,0};
		ball = Sphere(ballColor,ballCenter,0.314159);

		//double block2Color[3] = {0, 0, 1};
		//double block2Center[3] = {2, 0, -5};
		//level[1] = Block(block2Color, block2Center, 1, 1, 1, 0, 45);
		/*level[2] = Block(0, 0, -200, 0, 10, -200, 2);
		level[3] = Block(0, -10, -20, 0, 10, -20, 2);
		level[4] = Block(-10, 0, -20, 10, 0, -2, 2);
		*/
		//level[0].toString();

		FILE * logFile;
		logFile = fopen("log.txt", "wb");
		if(logFile == NULL)
		{
			printf("Unable to open log file. Exiting...\n");
			exit(2);
		}
		
		__glewInit(logFile);
		ShaderManager shaders = ShaderManager(logFile);
		
		const char * vertPath = "Shaders/Render3dModel.vert";
		const char * fragPath = "Shaders/Render3dModel.frag";
		prog = shaders.buildShaderProgram(&vertPath, &fragPath, 1, 1);
		vertPath = "Shaders/BallShader.vert";
		fragPath = "Shaders/BallShader.frag";
		ballProg = shaders.buildShaderProgram(&vertPath, &fragPath, 1, 1);
		while (App->IsOpened())
		{
			App->SetActive();
			
			handleEvents();
			glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
			
			updateModelviewMatrix();
			glUseProgram(prog);
			setShaderVariables(prog);
			setShaderVariables(ballProg);
			for (int i = 0; i < 1; ++i)
			{
				level[i].display();
			}
			glUseProgram(ballProg);
			ball.display();
			App->Display();
		}
	}