void triMeshApp::setup(){ // cam, lights material mCam = new CameraPersp(getWindowWidth(), getWindowHeight(), 45.0f); mCam->lookAt( Vec3f(300, 700, -600), Vec3f(0,0,0) ); mCam->setPerspective( 60.0f, getWindowAspectRatio(), 0.1f, 5000.0f ); yrot = 0; glEnable(GL_DEPTH_TEST); glShadeModel(GL_SMOOTH); glEnable(GL_LIGHTING); glEnable(GL_NORMALIZE); mLight = new gl::Light(gl::Light::DIRECTIONAL, 0); mLight->setDirection( Vec3f(0,0.1,0.3).normalized()); mLight->setAmbient( Color( 0.2f, 0.2f, 0.2f ) ); mLight->setDiffuse( Color( 1.0f, 1.0f, 1.0f ) ); mLight->update( *mCam ); mLight->enable(); mMaterial1.setSpecular( Color(0.5,0.5,0.5) ); mMaterial1.setDiffuse( Color( 0.0f, 1.0f, 0.0f ) ); mMaterial1.setAmbient( Color( 0.1f, 0.1f, 0.1f ) ); mMaterial1.setShininess( 20.0f ); mMaterial1.apply(); mMaterial2.setSpecular( Color(0,0,0) ); mMaterial2.setDiffuse( Color(1,0,0) ); mMaterial2.setAmbient( Color( 0.4f, 0.0f, 0.0f ) ); mMaterial2.setEmission(Color(1,0,0)); initPhysics(); ObjLoader loader( loadResource( RES_LOSPHERE )->createStream() ); loader.load( &mConvex ); mVBO = gl::VboMesh( mConvex ); ObjLoader loader2( loadResource( RES_TORUS )->createStream() ); loader2.load( &mConcave ); mVBOTerrain = gl::VboMesh( mConcave ); btConvexHullShape* shape = bullet::createConvexHullShape(mConvex, Vec3f(CONVEX_SCALE, CONVEX_SCALE, CONVEX_SCALE)); m_convexRigidBody = bullet::createConvexHullBody(m_dynamicsWorld, shape, Vec3f(0,500,0), 10000); btBvhTriangleMeshShape* concaveShape = bullet::createStaticConcaveMeshShape(mConcave, Vec3f(CONCAVE_SCALE, CONCAVE_SCALE, CONCAVE_SCALE), 5.0f); m_concaveRigidBody = bullet::createStaticRigidBody(m_dynamicsWorld, concaveShape, Vec3f(0,255,0)); m_hfImage = loadImage(loadResource(RES_HEIGHTMAP)); m_hfChannel = new Channel32f(m_hfImage); // note that HF_HEIGHTSCALE is ignored since we are using float data. we adjust the y-scale with the local scaling parameter only! btHeightfieldTerrainShape* hfShape = bullet::createHeightfieldTerrainShape(m_hfChannel, 64, 64, HF_HEIGHTSCALE, -500, 500, 1, Vec3f(HF_SCALE,HF_SCALEY,HF_SCALE)); m_hfRigidBody = bullet::createStaticRigidBody(m_dynamicsWorld, hfShape, Vec3f(0,0,0)); gl::VboMesh::Layout layout; layout.setDynamicColorsRGB(); layout.setDynamicPositions(); mVBOHeightfield = gl::VboMesh( m_hfImage.getWidth() * m_hfImage.getHeight(), 0, layout, GL_POINTS ); updateData( ); }
void ShadowMapSample::setup() { glPolygonOffset( 1.0f, 1.0f ); glEnable( GL_LIGHTING ); glEnable( GL_DEPTH_TEST ); mPaused = false; mLookThroughCamera = true; mDrawDepthMap = false; mCamera = new CameraPersp( getWindowWidth(), getWindowHeight(), 45.0f ); mCamera->lookAt( vec3( 5, 5, 5 ), vec3( 0, 0, 0 ) ); mCamera->setPerspective( 45.0f, getWindowAspectRatio(), 0.1f, 100.0f ); mLight = new gl::Light( gl::Light::POINT, 0 ); mLight->lookAt( vec3( 1, 5, 1 ), vec3( 0, 0, 0 ) ); mLight->setAmbient( Color( 0.3f, 0.3f, 0.3f ) ); mLight->setDiffuse( Color( 0.5f, 0.5f, 0.5f ) ); mLight->setSpecular( Color( 0.5f, 0.5f, 0.5f ) ); mLight->setShadowParams( 60.0f, 0.5f, 8.0f ); mLight->update( *mCamera ); mLight->enable(); gl::Material torusMaterial; torusMaterial.setSpecular( BLUE ); torusMaterial.setDiffuse( BLUE ); torusMaterial.setAmbient( Color( 0.1f, 0.1f, 0.1f ) ); torusMaterial.setShininess( 25.0f ); gl::Material backboardMaterial; backboardMaterial.setAmbient( RED ); backboardMaterial.setDiffuse( RED ); backboardMaterial.setShininess( 1.0f ); initShadowMap(); mTorus = gl::DisplayList( GL_COMPILE ); mTorus.newList(); gl::drawTorus( 1.0f, 0.3f, 32, 64 ); mTorus.endList(); mTorus.setMaterial( torusMaterial ); mBackboard = gl::DisplayList( GL_COMPILE ); mBackboard.newList(); gl::drawCube( vec3( 0.0f, -2.5f, 0.0f ), vec3( 5.0f, 0.1f, 5.0f ) ); mBackboard.endList(); mBackboard.setMaterial( backboardMaterial ); mShader = gl::GlslProg( loadResource( RES_SHADOWMAP_VERT ), loadResource( RES_SHADOWMAP_FRAG ) ); mShader.bind(); mShader.uniform( "depthTexture", 0 ); }
void SpawnObjectApp::setup() { mFixtures = Fixture::loadFixtures( getAssetPath("fixtures_001.csv") ); // load CSV fixtures file mFixtureMesh = Fixture::loadObj( getAssetPath("sphere.obj") ); // load fixture mesh mVenueMesh = Fixture::loadObj( getAssetPath("piano2.obj") ); // load venue mesh mFadeIn = 0.5f; mFadeOut = 0.1f; mSpeed = 0.2f; mRadius = 1.5f; mPointsN = 8; mDeg = 3; mModule = SpawnModule::create(); // create module mParams = params::InterfaceGl::create( "Params", Vec2i( 200, 240 ) ); // Gui mParams->addParam( "Fade IN", &mFadeIn , "min=0.001 max=1.0 step=0.001" ); mParams->addParam( "Fade OUT", &mFadeOut , "min=0.001 max=1.0 step=0.001" ); mParams->addSeparator(); mParams->addParam( "Speed", &mSpeed , "min=0.001 max=10.0 step=0.001" ); mParams->addParam( "Radius", &mRadius , "min=0.1 max=15.0 step=0.1" ); mParams->addParam( "Points N", &mPointsN , "min=2 max=100 step=1" ); mParams->addParam( "Deg", &mDeg , "min=1 max=10 step=1" ); ci::CameraPersp initialCam; // Initialise camera initialCam.setPerspective( 45.0f, ci::app::getWindowAspectRatio(), 0.1, 3000 ); mMayaCam = MayaCamUI( initialCam ); // Set up light mLight = new gl::Light( gl::Light::DIRECTIONAL, 0 ); mLight->setDirection( Vec3f( 0.0f, 0.1f, 0.3f ).normalized() ); mLight->setAmbient( ColorAf::gray( 0.843f ) ); mLight->setDiffuse( ColorAf( 1.0f, 1.0f, 1.0f, 1.0f ) ); mLight->enable(); // create a path mModule->createPath( mPointsN, mDeg, mRadius ); }
void LocationApp::setup() { // Define properties mHeading = 0.0f; timeline().apply( &mRotationAngle, 0.0f, (float)(2 * M_PI), 8.0f ).loop(); timeline().apply( &mDotRadius, 0.0f, 0.1f, 0.5f ).loop(); LocationManager::enable(); LocationManager::getSignalLocationChanged().connect( std::bind( &LocationApp::locationChanged, this, std::_1 ) ); #if defined( CINDER_COCOA_TOUCH ) LocationManager::getSignalHeadingChanged().connect( std::bind( &LocationApp::headingChanged, this, std::_1 ) ); #endif // Load globe texture, setFrameRate( 60.0f ); mTexture = gl::Texture( loadImage( loadResource( RES_EARTH_JPG ) ) ); mTexture.setFlipped( true ); // Set up view gl::enable( GL_TEXTURE_2D ); gl::enableAlphaBlending(); // Set up light mLight = new gl::Light( gl::Light::DIRECTIONAL, 0 ); mLight->setDirection( Vec3f( 0.0f, 0.1f, 0.3f ).normalized() ); mLight->setAmbient( ColorAf::gray( 0.843f ) ); mLight->setDiffuse( ColorAf( 1.0f, 1.0f, 1.0f, 1.0f ) ); mLight->enable(); // Build the heading arrow float size = 80.0f; mArrow.moveTo( Vec2f( 0.0f, -size * 0.5f ) ); mArrow.lineTo( Vec2f( size * 0.5f, size * 0.5f ) ); mArrow.lineTo( Vec2f( 0.0f, size * 0.25f ) ); mArrow.lineTo( Vec2f( -size * 0.5f, size * 0.5f ) ); mArrow.close(); }
void winBodiesApp::setup(){ // cam, lights material mCam = new CameraPersp(getWindowWidth(), getWindowHeight(), 45.0f); mCam->lookAt( Vec3f(100, 400, -400), Vec3f(0,0,0) ); mCam->setPerspective( 60.0f, getWindowAspectRatio(), 0.1f, 5000.0f ); glEnable(GL_DEPTH_TEST); glShadeModel(GL_SMOOTH); glEnable(GL_LIGHTING); mLight = new gl::Light(gl::Light::DIRECTIONAL, 0); mLight->setDirection( Vec3f(0,0.1,0.3)); mLight->setAmbient( Color( 0.2f, 0.2f, 0.2f ) ); mLight->setDiffuse( Color( 1.0f, 1.0f, 1.0f ) ); mLight->update( *mCam ); mLight->enable(); mMaterial1.setSpecular( Color(0.5,0.5,0.5) ); mMaterial1.setDiffuse( Color( 0.33f, 0.24f, 1.0f ) ); mMaterial1.setAmbient( Color( 0.1f, 0.1f, 0.1f ) ); mMaterial1.setShininess( 20.0f ); mMaterial1.apply(); mMaterial2.setSpecular( Color(0,0,0) ); mMaterial2.setDiffuse( Color(1,0,0) ); mMaterial2.setAmbient( Color( 0.4f, 0.0f, 0.0f ) ); mMaterial2.setEmission(Color(1,0,0)); mMaterialG.setSpecular(Color(0,0,0)); mMaterialG.setDiffuse(Color(0,0,0.03)); mMaterialG.setAmbient(Color(0.1,0.1,0.1)); initPhysics(); lastTime = getElapsedSeconds(); }
void BrainbowApp::setup() { // LOAD AUDIO mAudio = AudioCont(); mAudio.setUp(); // START SCENE 1 sceneOne = true; sceneTwo = false; // Set up OpenGL gl::enableAlphaBlending(); gl::enableDepthRead(); gl::enableDepthWrite(); gongTimer.start(); ballTimer.start(); // LIGHTING //here glPolygonOffset( 1.0f, 1.0f ); glEnable( GL_LIGHTING ); glEnable( GL_DEPTH_TEST ); mLight = new gl::Light( gl::Light::POINT, 0 ); mLight->lookAt( Vec3f( 1, 5, 1 ), Vec3f (getWindowWidth(), getWindowHeight() * 0.5f, 0.0f )); mLight->setAmbient( Color( 0.3f, 0.3f, 0.3f ) ); mLight->setDiffuse( Color( 1.0f, 1.0f, 1.0f ) ); mLight->setSpecular( Color( 1.0f, 1.0f, 1.0f ) ); mLight->setShadowParams( 60.0f, 0.5f, 8.0f ); // mLight->update( *mCamera ); mLight->enable(); //LOAD SHAPES colorSat = 1.0f; sphereMaterial.setSpecular( ColorA(colorSat-0.3f, colorSat, colorSat, .4f ) ); sphereMaterial.setDiffuse( ColorA(colorSat-0.3f, colorSat, colorSat, .4f ) ); sphereMaterial.setAmbient( ColorA(colorSat-0.3f, colorSat, colorSat, .05f ) ); sphereMaterial.setShininess( 1.0f ); sphereMaterial.setEmission(ColorA(1, 1, 1, 1 )); gl::Material cylMaterial; cylMaterial.setSpecular( ColorA(0, 1.0f, 1.0f, .2f )); cylMaterial.setDiffuse( ColorA(0, 1.0f, 1.0f, .2f ) ); cylMaterial.setAmbient( ColorA(0, 1.0f, 1.0f, .2f ) ); cylMaterial.setShininess( 600.0f ); cylMaterial.setEmission(ColorA(1, 1, 1, 1 )); gl::Material curMaterial; curMaterial.setSpecular( ColorA(1, .5, 0, .5f )); curMaterial.setDiffuse( ColorA(1, .5, 0, .5f ) ); curMaterial.setAmbient( ColorA(1, 1.0f, 1.0f, .05f ) ); curMaterial.setShininess( 600.0f ); curMaterial.setEmission(ColorA(1, 1, 1, 1 )); discMaterial.setSpecular( ColorA(colorSat-0.3f, colorSat, colorSat, .4f ) ); discMaterial.setDiffuse( ColorA(colorSat-0.3f, colorSat, colorSat, .4f ) ); discMaterial.setAmbient( ColorA(colorSat-0.3f, colorSat, colorSat, .05f ) ); discMaterial.setShininess( 600.0f ); discMaterial.setEmission(ColorA(1, 1, 1, 1 )); initShadowMap(); mCloud = SphereCloud(0, 70); mDiamond = gl::DisplayList( GL_COMPILE ); mDiamond.newList(); gl::drawSphere(Vec3f(0, 0, 0), 300, 4); mDiamond.endList(); mDiamond.setMaterial( sphereMaterial ); mCyl = gl::DisplayList( GL_COMPILE ); mCyl.newList(); // gl::drawCylinder(200, 200, 200); gl::drawColorCube(Vec3f(0, 0, 0), Vec3f(300, 300, 300)); mCyl.endList(); mCyl.setMaterial(cylMaterial); mCur = gl::DisplayList( GL_COMPILE ); mCur.newList(); gl::drawSphere(Vec3f(0, 0, 0), 5); mCur.endList(); mCur.setMaterial(curMaterial); mDisc = gl::DisplayList( GL_COMPILE ); mDisc.newList(); gl::drawSolidCircle(Vec2f(0, 0), 60, 6); mDisc.endList(); mDisc.setMaterial( discMaterial ); // START LEAP mLeap = LeapSdk::Device::create(); mCallbackId = mLeap->addCallback( &BrainbowApp::onFrame, this ); mShader = gl::GlslProg( loadResource( RES_SHADOWMAP_VERT ), loadResource( RES_SHADOWMAP_FRAG ) ); mShader.bind(); mShader.uniform( "depthTexture", 0 ); }
void PopGameApp::setup() { speed2 =3.5; setWindowSize(1920,1080); //setWindowSize(1080/2,1920/2); setWindowPos(0, 0); mCamera = new CameraPersp( getWindowWidth(), getWindowHeight(), 45.0f ); mCamera->lookAt( Vec3f( 0, -300, -400 ), Vec3f( 0, 0, 50 ) ); mCamera->setPerspective( 80.0f, getWindowAspectRatio(),200.0f, 4000.0f ); mLight = new gl::Light( gl::Light::POINT, 0 ); mLight->lookAt( Vec3f(1000,-1000, -2000 ), Vec3f( 0, 1000, 0 ) ); mLight->setShadowParams(60.0f,2000.f, 3500.0f ); mLight->update( *mCamera ); mLight->enable(); mShader = gl::GlslProg( loadAsset("shadowMap_vert.glsl"),loadAsset("shadowMap_frag.glsl") ); mShader.bind(); mShader.uniform( "depthTexture", 1 ); mShader.uniform( "difTexture", 0 ); mShader.unbind(); initShadowMap(); groundHolder.setup(); stage.addChild(&groundHolder); enemyHandler.setup(); stage.addChild(&enemyHandler); BulletHandler::getInstance()->enemyHandler =&enemyHandler; plane =new Hero(); plane->load("plane.png","planeh.png"); plane->setAlign(neuro::ALIGN_CENTER); plane->z = 0; stage.addChild(plane); prevTime = cinder::app::getElapsedSeconds(); BulletHandler::getInstance()->stage =&stage; logo =new Image(); logo->load("logo.png"); // logo->rotationX =-3.1415; logo->setAlign(neuro::ALIGN_BOTTOM_LEFT); logo->x =0; logo->y =1080*2; //logo->scaleX =logo->scaleY =logo->scaleZ =4; stage2D.scaleX=stage2D.scaleY =0.5; stage2D.addChild(logo); }
void RodSoundApp::draw() { while (running && // app::getElapsedSeconds() - tAtLastDraw < 1.0/app::getFrameRate() && fe.nextTimestep(c) > 1.0 / (real) SampleRate) { update(); } tAtLastDraw = app::getElapsedSeconds(); PROFILER_START("Draw"); // Clear out the window with grey gl::clear(Color(0.45, 0.45, 0.5)); // Enable alpha blending and depth testing gl::enableAlphaBlending(); gl::enableDepthRead(true); gl::enableDepthWrite(true); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Draw framerate counter gl::setMatricesWindow(getWindowSize()); std::stringstream ss; ss << getAverageFps(); gl::drawStringRight(ss.str(), Vec2c(getWindowWidth()-toPixels(10), getWindowHeight()-toPixels(20)), Color(0.0, 0.0, 0.0), Font("Arial", toPixels(12))); // Set projection/modelview matrices gl::setMatrices(cam); // Draw the rod and the normal of the bishop frame for(int i=0; i<r->numEdges(); i++) { Vec3c p0 = EtoC(r->cur().POS(i)); Vec3c p1 = EtoC(r->cur().POS(i+1)); gl::drawLine(p0, p1); gl::color(1.0, 1.0, 0.0); gl::lineWidth(1.0); Vec3c u = EtoC(r->cur().u[i]); gl::drawLine((p0+p1)/2.0, (p0+p1)/2.0+u*(p1-p0).length()*2.0); } m.apply(); l->setDiffuse(Color::white()); l->setAmbient(Color::white()); l->setPosition(Vec3c(0.0, 50.0, 0.0)); l->enable(); diffuseProg.bind(); for (int i=0; i<r->numCPs(); i++) { gl::pushModelView(); gl::translate(EtoC(r->cur().POS(i))); spheredl->draw(); gl::popModelView(); } diffuseProg.unbind(); rodProg.bind(); floorTex.enableAndBind(); gl::draw(floor); floorTex.disable(); rodProg.unbind(); // Draw rod edges rodProg.bind(); rodTex.enableAndBind(); for (int i=0; i<r->numEdges(); i++) { gl::pushModelView(); Vec3c v = EtoC(r->cur().edge(i).normalized()); gl::translate(EtoC(r->cur().POS(i))); Quaternion<real> q(Vec3c(0.0, 1.0, 0.0), v); real angle = acos(std::max((real)-1.0, std::min((real)1.0, (q*Vec3c(-1.0, 0.0, 0.0)).dot(EtoC(r->cur().u[i]))))); if ((q*Vec3c(-1.0, 0.0, 0.0)).dot(EtoC(r->cur().v(i))) > 0.0) angle = -angle; gl::rotate(Quaternion<real>(v, angle)); gl::rotate(q); gl::rotate(Vec3c(0.0, r->cur().rot(i)*180.0/constants::pi, 0.0)); gl::scale(1.0, r->cur().edgeLength(i), 1.0); cylinderdl->draw(); gl::popModelView(); } rodTex.unbind(); rodProg.unbind(); for (RodEnergy* e : energies) { e->draw(c.timestep()); } integrator->draw(); fe.record(c); PROFILER_STOP("Draw"); }
/* * @Description: setup function ( more aesthetic as could be in constructor here ) * @param: none * @return: none */ void Base_ThreeD_ProjectApp::setup() { RENDER_MODE = 3; glEnable( GL_LIGHTING ); glEnable( GL_DEPTH_TEST ); glEnable(GL_RESCALE_NORMAL); //important if things are being scaled as OpenGL also scales normals ( for proper lighting they need to be normalized ) mParams = params::InterfaceGl( "3D_Scene_Base", Vec2i( 225, 125 ) ); mParams.addParam( "Framerate", &mCurrFramerate, "", true ); mParams.addParam( "Eye Distance", &mCameraDistance, "min=-100.0 max=-5.0 step=1.0 keyIncr== keyDecr=-"); mParams.addParam( "Lighting On", &mLightingOn, "key=l"); mParams.addParam( "Show/Hide Params", &mShowParams, "key=x"); mParams.addSeparator(); mCurrFramerate = 0.0f; mLightingOn = true; mViewFromLight = false; mShowParams = true; //create camera mCameraDistance = CAM_POSITION_INIT.z; mEye = Vec3f(CAM_POSITION_INIT.x, CAM_POSITION_INIT.y, CAM_POSITION_INIT.z); mCenter = Vec3f::zero(); mUp = Vec3f::yAxis(); mCam = new CameraPersp( getWindowWidth(), getWindowHeight(), 180.0f ); mCam->lookAt(mEye, mCenter, mUp); mCam->setPerspective( 45.0f, getWindowAspectRatio(), 1.0f, 50.0f ); gl::setMatrices( *mCam ); //create light mLight = new gl::Light( gl::Light::DIRECTIONAL, 0 ); mLight->lookAt( Vec3f(LIGHT_POSITION_INIT.x, LIGHT_POSITION_INIT.y * -1, LIGHT_POSITION_INIT.z), Vec3f( 0, 0, 0 ) ); mLight->setAmbient( Color( 1.0f, 1.0f, 1.0f ) ); mLight->setDiffuse( Color( 1.0f, 1.0f, 1.0f ) ); mLight->setSpecular( Color( 1.0f, 1.0f, 1.0f ) ); mLight->setShadowParams( 100.0f, 1.0f, 20.0f ); mLight->update( *mCam ); mLight->enable(); //create light ref mLightRef = new gl::Light( gl::Light::DIRECTIONAL, 0 ); mLightRef->lookAt( LIGHT_POSITION_INIT, Vec3f( 0, 0, 0 ) ); mLightRef->setShadowParams( 100.0f, 1.0f, 20.0f ); //DEBUG Test objects ci::ColorA pink( CM_RGB, 0.84f, 0.49f, 0.50f, 1.0f ); ci::ColorA green( CM_RGB, 0.39f, 0.78f, 0.64f, 1.0f ); ci::ColorA blue( CM_RGB, 0.32f, 0.59f, 0.81f, 1.0f ); ci::ColorA orange( CM_RGB, 0.77f, 0.35f, 0.35f, 1.0f ); gl::Material torusMaterial; torusMaterial.setSpecular( ColorA( 1.0, 1.0, 1.0, 1.0 ) ); torusMaterial.setDiffuse( pink ); torusMaterial.setAmbient( ColorA( 0.3, 0.3, 0.3, 1.0 ) ); torusMaterial.setShininess( 25.0f ); gl::Material boardMaterial; boardMaterial.setSpecular( ColorA( 0.0, 0.0, 0.0, 0.0 ) ); boardMaterial.setAmbient( ColorA( 0.3, 0.3, 0.3, 1.0 ) ); boardMaterial.setDiffuse( green ); boardMaterial.setShininess( 0.0f ); gl::Material boxMaterial; boxMaterial.setSpecular( ColorA( 0.0, 0.0, 0.0, 0.0 ) ); boxMaterial.setAmbient( ColorA( 0.3, 0.3, 0.3, 1.0 ) ); boxMaterial.setDiffuse( blue ); boxMaterial.setShininess( 0.0f ); gl::Material sphereMaterial; sphereMaterial.setSpecular( ColorA( 1.0, 1.0, 1.0, 1.0 ) ); sphereMaterial.setAmbient( ColorA( 0.3, 0.3, 0.3, 1.0 ) ); sphereMaterial.setDiffuse( orange ) ; sphereMaterial.setShininess( 35.0f ); //using DisplayLists for simplicity but highly recommend to use VBO's for serious work ( as DisplayLists will be deprecated soon ... and speed difference in now negligible ) mTorus = gl::DisplayList( GL_COMPILE ); mTorus.newList(); gl::drawTorus( 1.0f, 0.3f, 32, 64 ); mTorus.endList(); mTorus.setMaterial( torusMaterial ); mBoard = gl::DisplayList( GL_COMPILE ); mBoard.newList(); gl::drawCube( Vec3f( 0.0f, 0.0f, 0.0f ), Vec3f( 10.0f, 0.1f, 10.0f ) ); mBoard.endList(); mBoard.setMaterial( boardMaterial ); mBox = gl::DisplayList( GL_COMPILE ); mBox.newList(); gl::drawCube( Vec3f( 0.0f, 0.0f, 0.0f ), Vec3f( 1.0f, 1.0f, 1.0f ) ); mBox.endList(); mBox.setMaterial( boxMaterial ); mSphere = gl::DisplayList( GL_COMPILE ); mSphere.newList(); gl::drawSphere( Vec3f::zero(), 0.8f, 30 ); mSphere.endList(); mSphere.setMaterial( sphereMaterial ); //noise texture required for SSAO calculations mRandomNoise = gl::Texture( loadImage( loadResource( NOISE_SAMPLER ) ) ); initFBOs(); initShaders(); }
void MeshViewApp::draw() { // Clear the window gl::clear(); gl::color(Color::white()); if(isInitialized()) { // Get ready to draw in 3D gl::pushMatrices(); gl::setMatrices(m_camera); gl::enableDepthRead(); gl::enableDepthWrite(); // Bind textures if(m_texDiffuse) m_texDiffuse->enableAndBind(); if (m_texNormal) m_texNormal->bind(1); if (m_texSpecular) m_texSpecular->bind(2); if(m_texAO) m_texAO->bind(3); if(m_texEmissive) m_texEmissive->bind(4); // Bind shader m_shader->bind(); m_shader->uniform("texDiffuse", 0); m_shader->uniform("texNormal", 1); m_shader->uniform("texSpecular", 2); m_shader->uniform("texAO", 3); m_shader->uniform("texEmissive", 4); m_shader->uniform("texDiffusePower", m_texDiffusePower); m_shader->uniform("texNormalPower", m_texNormalPower); m_shader->uniform("texSpecularPower", m_texSpecularPower); m_shader->uniform("texAOPower", m_texAOPower); m_shader->uniform("texEmissivePower", m_texEmissivePower); m_shader->uniform("diffuseEnabled", m_diffuseEnabled); m_shader->uniform("normalEnabled", m_normalEnabled); m_shader->uniform("specularEnabled", m_specularEnabled); m_shader->uniform("aoEnabled", m_aoEnabled); m_shader->uniform("emissiveEnabled", m_emissiveEnabled); m_shader->uniform("material.Ka", m_matAmbient); m_shader->uniform("material.Kd", m_matDiffuse); m_shader->uniform("material.Ks", m_matSpecular); m_shader->uniform("material.Shininess", m_matShininess); m_shader->uniform("gamma", m_gamma); // Enable lights m_light1->enable(); m_light2->enable(); // Render model gl::pushModelView(); gl::multModelView(m_matrix); m_assimpLoader.draw(); gl::popModelView(); // Disable lights m_light1->disable(); m_light2->disable(); // Unbind shader m_shader->unbind(); // Unbind textures gl::disable(m_texDiffuse->getTarget()); // Disable 3D rendering gl::disableDepthWrite(); gl::disableDepthRead(); // Restore matrices gl::popMatrices(); // Enable 2D rendering gl::setMatricesWindow(getWindowSize()); gl::setViewport(getWindowBounds()); // Render parameter window if(m_params) m_params->draw(); } // Render debug information Debug::get().draw(ColorAf::white()); }