openFrameworksでFboのスクリーンショットを保存する方法です。
ofFboをを一旦ofPixelsに変換したのちofImageにするとうまくいくようです。
ofImage img;
ofFbo fbo;
ofPixels pixels;
sキーが押されたらファイルが保存されるようにします。
void ofApp::keyPressed(int key){
if(key =='s'){
fbo.readToPixels(pixels);
img.setFromPixels(pixels);
char fileNameStr[255];
string date = ofGetTimestampString();//タイムスタンプをファイル名にする
sprintf(fileNameStr, "%s.png", date.c_str());
img.save(fileNameStr,OF_IMAGE_QUALITY_BEST);
}
}
ofCreateWindowでウィンドウを作った際にGLSLの#version 120が動きませんでした。
setGLVersionの設定を3,2から2,1に書き換えると動きました。
int main( ){
ofGLWindowSettings s;
s.setGLVersion(2,1);//ここを2,1にする
s.width = 1920;//画面サイズ
s.height = 1080;//画面サイズ
ofCreateWindow(s);
ofRunApp(newofApp());
}
このサイトでも紹介されているように3,2だと#version 150しか動作しません。