Cinder Forum ARCHIVE
//----------------------------------------------------------------------------------------------
void BulletSpheresApp::draw()
{
drawToDepthFbo();
gl::clear( Color( 0.1f, 0.1f, 0.1f ) );
gl::setMatrices( mCam );
gl::viewport( vec2( 0 ), getWindowSize() );
//cout<<"position: "<<mRigidBodies[mRigidBodies.size()-1].getPos()<<endl;
// Draw small spheres
{
gl::ScopedTextureBind scopeTex0( mLight->getFbo()->getDepthTexture(), 0 );
gl::ScopedTextureBind scopeTex1( mStripeTex, 1 );
mRenderGlsl->uniform( "uShadowMap", 0 );
//mRenderGlsl->uniform( "uColor", Color(0.9,0.2,0.0) );
mRenderGlsl->uniform( "uStripeTex", 1 );
mRenderGlsl->uniform( "uLightPos", mLight->getPos() );
mRenderGlsl->uniform( "uDepthBias", mLight->getDepthBias() );
mRenderGlsl->uniform( "uLightPos1", mRigidBodies[0].getPos() );
mRenderGlsl->uniform( "uLightPos2", centerLight );
mRenderGlsl->uniform( "uRadius1", mRigidBodies[0].getSize() );
mRenderGlsl->uniform( "uShadowMvp", mLight->getViewProjection() );
mRenderSphere->drawInstanced( NUM_PARTICLES);
}
// Draw big spheres
mGlowGlsl->bind();
mGlowGlsl->uniform( "uLightPos", mLight->getPos() );
for( auto &body : mRigidBodies ){
auto index = body.getId();
if( index < NUM_GLOWS ){
mGlowGlsl->uniform( "uColor", mGlowColors[index] );
body.draw();
}
}
// Draw light source (if point light)
//if( mLight->getPos().w > 0.5f )
gl::enableDepthWrite();
gl::enableDepthRead();
gl::pushMatrices();
//gl::rotate( mArcball.getQuat() );
mBatch->draw();
gl::popMatrices();
}
//----------------------------------------------------------------------------------------------
CINDER_APP( BulletSpheresApp, RendererGl( RendererGl::Options().msaa( 0 ).coreProfile( true ).version( 3, 3 ) ),
[]( App::Settings* settings )
{
settings->disableFrameRate();
settings->setWindowSize( 1280, 720 );
} )