topical media & game development

talk show tell print

lib-of-vs-apps-examples-textureScreengrabExample-src-testApp.cpp / cpp



  include <testApp.h>
  
  //--------------------------------------------------------------
  void testApp::setup(){        
          counter = 0;
          ofSetCircleResolution(100);
          texScreen.allocate(300,300,GL_RGB);
          ofBackground(230,230,240);
          
  }
   
  
  //--------------------------------------------------------------
  void testApp::update(){
          counter += 1;
  }
  
  //--------------------------------------------------------------
  void testApp::draw(){
  
          // 1st, draw on screen:
          ofSetColor(0x66CC33);        
          ofRect(100,100,300,300);
          
          ofSetColor(0xffffff);
          glPushMatrix();
                  glTranslatef(200,200,0);
                  glRotatef(counter,0,0,1);
                  ofCircle(0,0,80);
                  ofCircle(100,0,10);        // a small one
          glPopMatrix();
          ofSetColor(0x333333);
          ofDrawBitmapString("(a) on screen", 150,200);
  
          ofSetColor(0xFFCC33);        
          ofCircle(mouseX, mouseY,20);
          
  
          // 2nd, grab a portion of the screen into a texture
          // this is quicker then grabbing into an ofImage
          // because the transfer is done in the graphics card
          // as opposed to bringing pixels back to memory
          // note: you need to allocate the texture to the right size
          texScreen.loadScreenData(100,100,300,300);
          
          
  
          // finally, draw that texture on screen, how ever you want
          // (note: you can even draw the texture before you call loadScreenData, 
          // in order to make some trails or feedback type effects)
          glPushMatrix();
                  ofSetColor(0xffffff);
                  glTranslatef(550,300,0);
                  //glRotatef(counter, 0.1f, 0.03f, 0);
                  float width = 200 + 100 * sin(counter/200.0f);
                  float height = 200 + 100 * sin(counter/200.0f);;
                  texScreen.draw(-width/2,-height/2,width,height);
          glPopMatrix();
  
          glPushMatrix();
                  ofSetColor(0xffffff);
                  glTranslatef(700,210,0);
                  glRotatef(counter, 0.1f, 0.03f, 0);
                  texScreen.draw(-50,-50,100,100);
          glPopMatrix();
  
          ofSetColor(0x333333);
          ofDrawBitmapString("(b) in a texture, very meta!", 500,200);
  }
  
  //--------------------------------------------------------------
  void testApp::keyPressed  (int key){ 
          
  }
  
  //--------------------------------------------------------------
  void testApp::keyReleased(int key){ 
          
  }
  
  //--------------------------------------------------------------
  void testApp::mouseMoved(int x, int y ){
          
  }
  
  //--------------------------------------------------------------
  void testApp::mouseDragged(int x, int y, int button){
          
  }
  
  //--------------------------------------------------------------
  void testApp::mousePressed(int x, int y, int button){
          
  }
  
  //--------------------------------------------------------------
  void testApp::mouseReleased(int x, int y, int button){
  
  }
  
  //--------------------------------------------------------------
  void testApp::resized(int w, int h){
  
  }
  
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.