I am new to VVVV, so I hope its not a stupid question. But honestly couldnt find the answer in forum or docs or AI.
So I have some experience with PureData, and was told by a friend VVVV is like Pd for visuals. I have a small project to do , where 3 screens will be used to play videos. Videos are triggered by some external signal, maybe arduino maybe something else. So theres like one pc > 3 monitors and something like a toggle in the patch that would playback videos on screen 1, 2, 3 etc.
I thought VVVV would probably be great choice since I am used to visual programming, have experience with touchdesigner etc etc (but now dont have money for this…lol)
1- is it the right choice for me ?
2- I cannot for the life of me find how to control where I am outputting a video. I can find some docs that refer to 10+ years old solution that as far as I understand would not even work in windows11 ? I understand I can theoretically just drop the window on another monitor but thats not practical at all for me. Ideally i would have some actual screenMonitor variable or whatever and I can send my video to screenMonitor = 1 or screenMonitor = 2 etc.
but thats what you need to do after all to have a renderer window on a particular screen to display something. you dont need to do this by hand of course.
there are several options to choose from actually:
You can have 3 windows from one app. each on a different screen in fullscreen mode.
You can have 1 window stretched across all 3 screens but no fullscreen mode available (you can disable the window borders and title though)
When using nvidia drivers you can activate surround mode across all screens to get one giant desktop. then again 1 big renderer in fullscreen mode.
fullscreen mode is crutial to be able to enbale vsync, so you get no tearing. i would always prefere option 3 if possible.
now where you display your videos in the renderer window space is up to you.
What @tgd said, basically. You have to do your own window management and there are really no limits what you can do.
If you want to control the position, fullscreen status, etc. of windows, I find it handy to use the GameWindow class.
You can use the SetPosition and SetIsFullscreen nodes to work with the windows. You will probably want to create a bunch of Operations for this, like so:
Each RenderWindow actually outputs a reference to its GameWindow and you can then either use the operations directly or if you want everything a bit more neat, you can set the GameWindows to a datamodel and then have a separate patch just for windowing.
If you have more than one monitor connected, then the position on the 2nd screen is just the size of the first screen added to it. 0,0 starts at the first screen top left and then all other screens are usually positioned to the right of it. So if you have screen 1 set to 1920 x 1080 then the top left corner of the 2nd screen is 1920,0 and so on.
If you have 3 screens and want an easy way to just treat it as one big screen, you could try and find one of the Matrox Triple Head devices. Then to Windows (and vvvv) its just one big screen, but on the device you have 3 separate outputs.