読者です 読者をやめる 読者になる 読者になる

「構造」の再発見記

インタラクティヴとかに興味がある京都の学生

【openFrameworks】ofFBOのアンチエイリアス

openFrameworks

問題

FBO内にofEnableSmooting()を記述しても以下の様にアンチエイリアスが効かない


解決策

以下二つの解決策を発見

1.fbo.allocate()の第4引数を指定

 第4引数は、サンプル数らしい。大きくすればするほど綺麗になる。

fbo.allocate(ofGetWidth(), ofGetHeight(), GL_RGB, 4);

結果




2.加算合成を駆使

 描画したいコードの直前で、ofEnableBlendMode(OF_BRENDMODE_ADD)。描画が終わったらEnableAlphaBlendong()とofEnableSmoothing()。
※oFでは、加算合成とスムージングは同時に効かない。その為、加算合成の前にofDisableSmoothing()を記述。

void ofApp::draw(){
      fbo.begin();
           ofDisableSmoothing();
           ofEnableBlendMode(OF_BLENDMODE_ADD);
           /*描画したいコード*/
           ofEnableAlphaBlending();
           ofEnableSmoothing();
      fbo.end();
}

結果



コードを書く手間を考えたら、1の方が良さげ。