One app, two monitors, two full screen windows


#1

Hi all,

I’m on OF 0.9.8 OSX 10.11.6

I started from multiWindowOneAppExample in order to create an app that display two windows in two separate monitors in full screen mode.

first I tried to place windows in different monitors by using the field settings.monitor but it doesn’t work. I tried to set windowMode to OF_GAME_MODE, but the app crashes

settings.monitor = 0;
//settings.windowMode = OF_GAME_MODE;
//settings.multiMonitorFullScreen = true;

Anybody can help me?

Thanks a lot

Paolo


#2

Hi, does it work to only have one fullscreen window across both screens? It should be easier to manage.


#3

No… I need to full screen windows with two different contents, exactly like the example, but full screen in two different monitors.


#4

Hi Paolo, could you solve it?


#5

Hi mvs,

I didn’t, it’s an issue for an expert OF developer… If I’ll not receive any answer a possible workaround could be creating two apps that share sync data as they were a single app. Another solution is Syphon…

cheers,

Paolo


#6

It looks like this should be something basic. But obviously it is not.
I tried creating GL window of 1024x768, then getting the size from the current screen, creating the gui output with it. Then creating the video output same size but pushed the size of the got screen width. this works fine. But when i toggle the second screen to fullscreen, it makes it fullscreen but puts it to the first screen.
Somehow sounds reasonable, but don’t know how to further play around right now.
I would appreciate it if you keep me updated on your solution.
Bests


#7

Might this help? https://github.com/armadillu/ofxScreenSetup


#8

The simplest would be to create an application in fullscreen across all monitors and then use fbos to draw the contents of the different screens.

Also you can create a window to appear in fullscreen in an specified monitor by using:

	ofGLFWWindowSettings settings;
	settings.windowMode = OF_FULLSCREEN;
	settings.monitor = 0;
	auto window1 = ofCreateWindow(settings);
	auto app1 = std::make_shared<ofApp>();


	settings.monitor = 1;
	auto window2 = ofCreateWindow(settings);
	auto app2 = std::make_shared<OtherApp>();

	ofRunApp(window1, app1);
	ofRunApp(window2, app2);
	ofRunMainLoop();

#9

Thanks arturo and clem,

both your solutions are very interesting. I’ll give you feedback in the next days


#10

Hi arturo,
thank you for your reply.
i tried what you suggested. i am getting this error:

.
what am i doing wrong?


#11

This is what i am doing. The commented area is how i used to do it before, which is a rather long workaround… The new one throws the exception. I am probably doing a fatal mistake but don’t know what. Any help appreciated.


#12

that looks correct, in your old code though you were setting a pointer from one window to the other to access it later i guess but you are not doing that in the new code, so that pointer would be nullptr. might that be the cause of the crash?


#13

things got pretty complicated since i tried 4-5 different things at the same time.
i am playing a video and changing the frame according to input from the user via a sensor with restrictions given via UI.
What do you things makes more sense in this case?

ONE APP - draw gui in monitor 1 in fullscreen AND draw video (communicating with gui) in monitor 2 in fullscreen
OR
TWO APPS - guiApp on monitor 1 in fullscreen AND mainApp (including video output and sensor data communicating with gui input) in Monitor 2 in fullscreen?

right now i am having troubles with
1-one app: drawing only the video on the second screen
2-cannot put all my gui data in guiApp to make multiple apps. i am lost in communcation of parameters since i started as a single app…

how should i conitnue?
:slight_smile:


#14

one app is usually simpler, draw the output of the main app in an fbo if you need to, to make things easier