void TerrainApp::drawSphere() { Vec3f spherePos = mSphere.getCenter(); Vec3f roomDims = mRoom.getDims(); float x = ( spherePos.x + roomDims.x ) / ( roomDims.x * 2.0f ); float y = ( spherePos.z + roomDims.z ) / ( roomDims.z * 2.0f );; Vec2f texCoord = Vec2f( x, y ); mCubeMap.bind(); mRd.getHeightsTexture().bind( 1 ); mRd.getNormalsTexture().bind( 2 ); mSphereShader.bind(); mSphereShader.uniform( "cubeMap", 0 ); mSphereShader.uniform( "heightsTex", 1 ); mSphereShader.uniform( "normalsTex", 2 ); mSphereShader.uniform( "mvpMatrix", mSpringCam.mMvpMatrix ); mSphereShader.uniform( "terrainScale", mTerrainScale ); mSphereShader.uniform( "eyePos", mSpringCam.getEye() ); mSphereShader.uniform( "fogColor", mFogColor ); mSphereShader.uniform( "sandColor", mSandColor ); mSphereShader.uniform( "power", mRoom.getPower() ); mSphereShader.uniform( "roomDims", mRoom.getDims() ); mSphereShader.uniform( "texCoord", texCoord ); mSphereShader.uniform( "sphereRadius", mSphere.getRadius() * 0.45f ); mSphereShader.uniform( "zoomMulti", mZoomMulti ); mSphereShader.uniform( "timePer", mRoom.getTimePer() * 1.5f + 0.5f ); gl::draw( mSphere, 128 ); mSphereShader.unbind(); }
void TerrainApp::drawIntoRoomFbo() { mRoomFbo.bindFramebuffer(); gl::clear( ColorA( 0.0f, 0.0f, 0.0f, 0.0f ), true ); gl::setMatricesWindow( mRoomFbo.getSize(), false ); gl::setViewport( mRoomFbo.getBounds() ); gl::disableAlphaBlending(); gl::enable( GL_TEXTURE_2D ); glEnable( GL_CULL_FACE ); glCullFace( GL_BACK ); Matrix44f m; m.setToIdentity(); m.scale( mRoom.getDims() ); mCubeMap.bind(); mRoomShader.bind(); mRoomShader.uniform( "cubeMap", 0 ); mRoomShader.uniform( "mvpMatrix", mSpringCam.mMvpMatrix ); mRoomShader.uniform( "mMatrix", m ); mRoomShader.uniform( "eyePos", mSpringCam.mEye ); mRoomShader.uniform( "roomDims", mRoom.getDims() ); mRoomShader.uniform( "power", mRoom.getPower() ); mRoomShader.uniform( "lightPower", mRoom.getLightPower() ); mRoomShader.uniform( "timePer", mRoom.getTimePer() * 1.5f + 0.5f ); mRoom.draw(); mRoomShader.unbind(); mRoomFbo.unbindFramebuffer(); glDisable( GL_CULL_FACE ); }
void ShadedSphereApp::drawSphere() { gl::color( ColorA( 1, 1, 1, 1 ) ); gl::disable( GL_TEXTURE_2D ); mCubeMap.bind(); mSphereShader.bind(); mSphereShader.uniform( "cubeMap", 0 ); mSphereShader.uniform( "radius", 70.0f ); mSphereShader.uniform( "mvpMatrix", mSpringCam.mMvpMatrix ); mSphereShader.uniform( "eyePos", mSpringCam.getEye() ); mSphereShader.uniform( "power", mRoom.getPower() ); mSphereShader.uniform( "roomDim", mRoom.getDims() ); gl::drawSphere( Vec3f::zero(), 1.0f, 128 ); mSphereShader.unbind(); }