void CatalogApp::update() { if( getElapsedSeconds() - mMouseTimePressed < mMouseTimeThresh && !mMousePressed ){ mMouseTimePressed = 0.0f; selectStar( mWasRightButtonLastClicked ); } mRoom.update(); if( mRoom.isPowerOn() ) mScaleDest -= ( mScaleDest - mMaxScale ) * 0.05f; mScale -= ( mScale - mScaleDest ) * 0.02f; mScalePer = mScale/mMaxScale; // CAMERA if( mHomeStar != NULL ){ mSpringCam.setEye( mHomeStar->mPos + Vec3f( 100.0f, 0.0f, 40.0f ) ); } if( mDestStar != NULL ){ mSpringCam.setCenter( mDestStar->mPos ); } if( mMousePressed ) mSpringCam.dragCam( ( mMouseOffset ) * 0.01f, ( mMouseOffset ).length() * 0.01 ); mSpringCam.update( 0.25f ); BOOST_FOREACH( Star* &s, mBrightStars ){ s->update( mSpringCam.getCam(), mScale ); }
void RepulsionApp::draw() { // clear out the window with black gl::clear( ColorA( 0.1f, 0.1f, 0.1f, 0.0f ), true ); gl::setMatricesWindow( getWindowSize(), false ); gl::setViewport( getWindowBounds() ); gl::disableDepthRead(); gl::disableDepthWrite(); gl::enable( GL_TEXTURE_2D ); gl::enableAlphaBlending(); gl::color( ColorA( 1.0f, 1.0f, 1.0f, 1.0f ) ); // DRAW ROOM mRoomFbo.bindTexture(); gl::drawSolidRect( getWindowBounds() ); gl::setMatrices( mSpringCam.getCam() ); // DRAW PANEL drawInfoPanel(); gl::enable( GL_TEXTURE_2D ); gl::enableDepthRead(); gl::enableDepthWrite(); // DRAW PARTICLES mPositionFbos[mThisFbo].bindTexture( 0 ); mVelocityFbos[mThisFbo].bindTexture( 1 ); mShader.bind(); mShader.uniform( "currentPosition", 0 ); mShader.uniform( "currentVelocity", 1 ); mShader.uniform( "eyePos", mSpringCam.getEye() ); mShader.uniform( "power", mRoom.getPower() ); gl::draw( mSphereVbo ); mShader.unbind(); if( mSaveFrames && mNumSavedFrames < 15000 ){ writeImage( *getHomeDirectory().c_str() + "RepulsionGPU/" + toString( mNumSavedFrames ) + ".png", copyWindowSurface() ); mNumSavedFrames ++; } mThisFbo = ( mThisFbo + 1 ) % 2; mPrevFbo = ( mThisFbo + 1 ) % 2; }
void TerrainApp::draw() { float power = mRoom.getPower(); gl::clear( ColorA( 0.1f, 0.1f, 0.1f, 0.0f ), true ); gl::setMatricesWindow( getWindowSize(), false ); gl::setViewport( getWindowBounds() ); gl::disableDepthRead(); gl::disableDepthWrite(); gl::enableAlphaBlending(); gl::enable( GL_TEXTURE_2D ); gl::color( ColorA( 1.0f, 1.0f, 1.0f, 1.0f ) ); // DRAW ROOM FBO mRoomFbo.bindTexture(); gl::drawSolidRect( getWindowBounds() ); gl::setMatrices( mSpringCam.getCam() ); gl::color( ColorA( power, power, power, power * 0.1f + 0.9f ) ); // DRAW INFO PANEL drawInfoPanel(); gl::enable( GL_TEXTURE_2D ); gl::color( ColorA( 1.0f, 1.0f, 1.0f, 1.0f ) ); // DRAW WALLS mRoom.drawWalls( mRoom.getPower(), mRoomBackWallTex, mRoomLeftWallTex, mRoomRightWallTex, mRoomCeilingTex, mRoomFloorTex, mRoomBlankTex ); gl::enableAlphaBlending(); gl::enableDepthRead(); gl::enableDepthWrite(); gl::enable( GL_TEXTURE_2D ); // DRAW TERRAIN drawTerrain(); gl::disable( GL_TEXTURE_2D ); // DRAW SPHERE drawSphere(); }
void ShadedSphereApp::draw() { gl::clear( ColorA( 0, 0, 0, 0 ), true ); gl::color( ColorA( 1, 1, 1, 1 ) ); gl::setMatricesWindow( getWindowSize(), false ); gl::setViewport( getWindowBounds() ); gl::disableDepthRead(); gl::disableDepthWrite(); gl::enableAlphaBlending(); gl::enable( GL_TEXTURE_2D ); // DRAW ROOM mRoomFbo.bindTexture(); gl::drawSolidRect( getWindowBounds() ); gl::setMatrices( mSpringCam.getCam() ); gl::enableDepthRead(); gl::enableDepthWrite(); drawSphere(); }
void BubbleChamberApp::draw() { float power = mRoom.getPower(); Color powerColor = Color( power, power, power ); gl::clear( ColorA( 0.1f, 0.1f, 0.1f, 0.0f ), true ); gl::setMatricesWindow( getWindowSize(), false ); gl::setViewport( getWindowBounds() ); gl::disableDepthRead(); gl::disableDepthWrite(); gl::enableAlphaBlending(); gl::enable( GL_TEXTURE_2D ); gl::color( ColorA( 1.0f, 1.0f, 1.0f, 1.0f ) ); // ROOM mRoomFbo.bindTexture(); gl::drawSolidRect( getWindowBounds() ); gl::setMatrices( mSpringCam.getCam() ); // PANEL drawInfoPanel(); gl::disable( GL_TEXTURE_2D ); gl::enableDepthWrite(); gl::enableDepthRead(); gl::enableAlphaBlending(); gl::color( ColorA( powerColor, 1.0f ) ); // PARTICLES mController.drawParticles( power ); // DRAW GIBS mController.drawGibs(); // BUBBLES mController.drawBubbles( power ); gl::enable( GL_TEXTURE_2D ); gl::disableDepthWrite(); // DECALS gl::color( powerColor ); mDecalTex.bind( 0 ); mController.drawDecals(); // SMOKES Vec3f right, up; mSpringCam.getCam().getBillboardVectors( &right, &up ); mSmokeTex.bind( 0 ); mController.drawSmokes( right, up ); gl::disable( GL_TEXTURE_2D ); gl::enableDepthWrite(); gl::color( powerColor ); // MOTHS mController.drawMoths(); // GLOWCUBES mGlowCubeShader.bind(); mGlowCubeShader.uniform( "eyePos", mSpringCam.getEye() ); mGlowCubeShader.uniform( "power", mRoom.getPower() ); mGlowCubeShader.uniform( "mvpMatrix", mSpringCam.mMvpMatrix ); mController.drawGlowCubes( &mGlowCubeShader ); mGlowCubeShader.unbind(); if( mSaveFrames ){ writeImage( *getHomeDirectory().c_str() + "BubbleChamber/" + toString( mNumSaveFrames ) + ".png", copyWindowSurface() ); mNumSaveFrames ++; } }