Esempio n. 1
0
/**
   Callback that occurs when glut thinks its time to redraw the window.
*/
void handleDisplay()
{
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);

   // update the light position
   glLightfv(GL_LIGHT0, GL_POSITION, lightPosition0);

   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   setCamera();

   // draw the light source
   drawLightSource();

   // draw the wall background
   drawBackdropGeometry();

   // draw scene objects
   glColor3f(0.0,0.0,1.0);
   drawScene();

   // calc and draw shadows
   if (shadowsOn && light0On)
   {
      calculateShadows(floorPlane);
      drawShadows();
      calculateShadows(wallPlane);
      drawShadows();
   }

   glFlush();
   glutSwapBuffers();
}
Esempio n. 2
0
void LightView::draw(const Rect& dest, const Rect& src)
{
    g_painter->saveAndResetState();
    m_lightbuffer->bind();
    g_painter->setCompositionMode(Painter::CompositionMode_Replace);
    drawGlobalLight(m_globalLight);
    g_painter->setBlendEquation(m_blendEquation);
    g_painter->setCompositionMode(Painter::CompositionMode_Add);
    for(const LightSource& source : m_lightMap)
        drawLightSource(source.center, source.color, source.radius);
    m_lightbuffer->release();
    g_painter->setCompositionMode(Painter::CompositionMode_Light);
    m_lightbuffer->draw(dest, src);
    g_painter->restoreSavedState();
}
Esempio n. 3
0
void drawQuad(){


	glActiveTexture(GL_TEXTURE0);
	glEnable(GL_TEXTURE_2D);
	// Pass information to our shader to our shader
		int texture_location = glGetUniformLocation(myShaderManager->program,"brick_image");
		glUniform1i(texture_location,0);
	glBindTexture(GL_TEXTURE_2D,myShaderManager->layer1ID);

	glActiveTexture(GL_TEXTURE1);
	glEnable(GL_TEXTURE_2D);
		glUniform1i(glGetUniformLocation(myShaderManager->program,"bump_image"),1);
	glBindTexture(GL_TEXTURE_2D,myShaderManager->layer2ID);

	// Pass in the shader program id, which is 'program'		

	glBegin(GL_QUADS);
		glTexCoord2f(0,0);
		glVertex3f(-1,1,0);
		glTexCoord2f(1,0);
		glVertex3f(-1,-1,0);
		glTexCoord2f(1,1);
		glVertex3f(1,-1,0);
		glTexCoord2f(0,1);
		glVertex3f(1,1,0);
	glEnd();

	glActiveTexture(GL_TEXTURE1);  
	glBindTexture(GL_TEXTURE_2D, 0);  
	glDisable(GL_TEXTURE_2D);  
	  
	glActiveTexture(GL_TEXTURE0);  
	glBindTexture(GL_TEXTURE_2D, 0);  
	glDisable(GL_TEXTURE_2D);

	drawLightSource();

}
Esempio n. 4
0
	void MyViz::ambientOcclusion_voxel(GLsizei nf, Eigen::Matrix4f transformMatrix)
	{
		voxelize_3Dtexture(transformMatrix, nf);

		program_occusionDrawer_3DTexture.use();
		voxelImage.bind();

		GLuint loc_voxelImageTex = glGetUniformLocation(program_occusionDrawer_3DTexture.m_program_obj, "voxelImage");

		glUniform1i(loc_voxelImageTex, 0);

		//setup parameter
		program_occusionDrawer_3DTexture.setParameter(shaderAttrib::fv3, (void*)&Parameter::getInstance()->lightPosition, "lightPosition");
		program_occusionDrawer_3DTexture.setParameter(shaderAttrib::i1, (void*)&Parameter::getInstance()->OctreeLevel, "maxLevel");
		program_occusionDrawer_3DTexture.setParameter(shaderAttrib::f1, (void*)&Parameter::getInstance()->distance_weight, "weight");
		program_occusionDrawer_3DTexture.setParameter(shaderAttrib::mat4x4, (void*)&transformMatrix, "transform");

		draw(nf);
	//	draw_mesh(nf);
		program_occusionDrawer_3DTexture.unuse();
		drawLightSource();
	}