openFrameworksでFboのスクリーンショットを保存する方法

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のShaderを動かすための設定

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しか動作しません。