ofgraphics

ofGraphicsライブラリについての解析(1)

openFrameworksでも、もっとも重要なofGraphicsライブラリの関数を解析していきたいと思います。

http://www.openframeworks.cc/documentation/graphics/ofGraphics.html

openFrameworksのライブラリは巨大なので解析には時間がかかりそうですが少しずつやっていきましょう。

ひとまず、最近プログラムを作成していて ? が浮かんだ関数から、解析していきたいと思います。

  • ofPushMatrix()
  • ofPopMatrix()

この二つの関数です。

ぶっちゃけ、答えを言うと上の関数は座標系を保持する関数で、下の関数は座標系を再展開する関数です。つまり、画面上のオブジェクトを移動可能にするものです。

たとえば、画面に四角と丸のオブジェクトが描写されていて、どちらかを回転させようとしましょう。

しかし、回転する関数ofRotateX()を、オブジェクトの描写前に書いてしまうと、どちらも回転してしまうことになります。

そこで出てくるのが今回解析した関数です。

この関数二つの間にオブジェクトを動かすようなソースを書けば、そのオブジェクトだけを動かすことが可能になります。

以下のソースを見てみると、わかりやすいかと思います。

void testApp::draw(){
ofTranslate(ofGetWidth()/2,ofGetHeight()/2,0);
ofPushMatrix(); // push the current coordinate position
ofRotateZ(R); // change the coordinate system
ofSetColor(0,255,0);
ofRect(0,0,40,40); // draw a rect
ofPopMatrix(); // recall the pushed coordinate position
ofSetColor(255,0,0);
ofRect(0, 0, 10,10); // draw a circle
}