Usually, to sketch a new idea, I start working with processing. It is more convenient to simply open the processing app and write code than create a whole new project with openFrameworks. Or so it seems. Somewhere down the road comes this little thing, that's simply not to archive with processing, but is so essential for the idea. Thats when I finally fire up the good old project generator and port everything I just did the last couple of hours to openFrameworks.

So it happened, that I needed to start a sketch on my second monitor in fullscreen. Processing: totally impossible. Arguably, this is not the standard task in openFrameworks either, but with a bit of research, it's perfectly doable.


int main( ){    
    CGDisplayCount displayCount;
    CGDirectDisplayID displays[32];

    // Grab the active displays
    CGGetActiveDisplayList(32, displays, &displayCount);
    int numDisplays = displayCount;

    // If two displays present, use the 2nd one. If only one, use the first
    int whichDisplay = numDisplays-1;

    int displayHeight = CGDisplayPixelsHigh (displays[whichDisplay]);
    int displayWidth = CGDisplayPixelsWide (displays[whichDisplay]);

    CGRect displayBounds= CGDisplayBounds (displays[whichDisplay]);

    // Setup the GL context
    ofSetupOpenGL(displayWidth, displayHeight, OF_FULLSCREEN);

    // OF_FULLSCREEN makes the window as big as the primary display, but we want it to be as big as whichever we're using
    ofSetWindowShape(displayWidth, displayHeight);

    // Move onto our display
    ofSetWindowPosition(displayBounds.origin.x, displayBounds.origin.y);

    // Print display info (if in debug scheme, see http://madcity.at/2013/ofLog-debug-release/)
    #ifdef IS_DEBUG
    cout << numDisplays << " display(s) detected." << endl
         << "Using display " << whichDisplay << " (" << displayWidth << "x" << displayHeight << ")." << endl;

    ofRunApp(new ofApp());

Source: Comment by gregorywitt on "Dual Monitor Full-screen"

Date: 2015-05-14 | Tags: openFrameworks