void TextParticlesApp::drawTextToFbo() { { vec2 size = mTextFbo->getSize(); gl::ScopedFramebuffer scpFbo( mTextFbo ); gl::clear( ColorA( 0 , 0, 0, 0 ) ); gl::ScopedViewport scpVp( ivec2(), size ); gl::ScopedMatrices scpMtrx; gl::ScopedColor scpCol( 1, 1, 1); vec2 stringSize = mTextureFont->measureString( mString ); float descent = mTextureFont->getDescent(); float ascent = mTextureFont->getAscent(); mTextSize = stringSize + vec2( 0, descent ); // OPTIONALLY, draw the text metrics /* // string size - RED gl::color(1, 0, 0); gl::drawSolidRect( Rectf( -10, 0, stringSize.x + 10.0, stringSize.y ) ); // ascent - CYAN gl::color(0, 1, 1); gl::drawSolidRect( Rectf( 0, stringSize.y - ascent, stringSize.x, ascent ) ); // descent - YELLOW gl::color(1, 1, 0); gl::drawSolidRect( Rectf( 0, stringSize.y-descent, stringSize.x, stringSize.y ) ); // above ascent gl::color( 0, 1, 0 ); gl::drawSolidRect( Rectf( 0, 0, stringSize.x, stringSize.y-ascent ) );*/ // DRAW string to FBO gl::color(1, 1, 1); mTextureFont->drawString( mString, vec2( 0, stringSize.y - descent ) ); } // GET Texture from FBO mTextSurf = Surface( mTextFbo->readPixels8u( mTextFbo->getBounds() ) ); }
void TextureFontApp::draw() { gl::setMatricesWindow( getWindowSize() ); gl::enableAlphaBlending(); gl::clear( Color( 0, 0, 0 ) ); std::string str( "Granted, then, that certain transformations do happen, it is essential that we should regard them in the philosophic manner of fairy tales, not in the unphilosophic manner of science and the \"Laws of Nature.\" When we are asked why eggs turn into birds or fruits fall in autumn, we must answer exactly as the fairy godmother would answer if Cinderella asked her why mice turned into horses or her clothes fell from her at twelve o'clock. We must answer that it is MAGIC. It is not a \"law,\" for we do not understand its general formula." ); Rectf boundsRect( 40, mTextureFont->getAscent() + 40, getWindowWidth() - 40, getWindowHeight() - 40 ); gl::color( ColorA( 1, 0.5f, 0.25f, 1.0f ) ); #if defined( CINDER_COCOA ) mTextureFont->drawStringWrapped( str, boundsRect ); #else mTextureFont->drawString( str, boundsRect ); #endif // Draw FPS gl::color( Color::white() ); mTextureFont->drawString( toString( floor(getAverageFps()) ) + " FPS", Vec2f( 10, getWindowHeight() - mTextureFont->getDescent() ) ); // Draw Font Name float fontNameWidth = mTextureFont->measureString( mTextureFont->getName() ).x; mTextureFont->drawString( mTextureFont->getName(), Vec2f( getWindowWidth() - fontNameWidth - 10, getWindowHeight() - mTextureFont->getDescent() ) ); }
void BasicShaderIIApp::draw() { gl::clear( Color::black() ); // Draw FPS gl::color( Color::white() ); mTextureFont->drawString( toString( floor(getAverageFps()) ) + " FPS", Vec2f( 100, getWindowHeight() - mTextureFont->getDescent() ) ); gl::pushMatrices(); gl::setMatrices( mCam ); gl::enableAlphaBlending(); // draw interface params::InterfaceGl::draw(); if( mDoSave ) { // save non-conflicting image // includes interface to record parameters saveFrame(); mDoSave = false; } mShader.bind(); mShader.uniform("lightDir", mLightDir ); gl::pushMatrices(); gl::rotate( mArcball.getQuat() ); gl::draw( mVBO ); gl::popMatrices(); mShader.unbind(); gl::popMatrices(); }