/** 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(); }
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(); }
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(); }
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(); }