projectM-visualizer / frontend-sdl-cpp

Standalone application based on libSDL that turns your desktop audio into awesome visuals. Available on most platforms supported by both libprojectM and libSDL.
GNU General Public License v3.0
66 stars 35 forks source link

Implement multi-monitor rendering support #58

Open kblaschke opened 1 year ago

kblaschke commented 1 year ago

As requested multiple times by users over the past weeks, adding proper multi-monitor fullscreen support should be considered. Due to today's monitor sizes and different setups, simply stretching a single, borderless window over all displays won't be a great solution. Specifically, the maximum texture size may not be enough if a user arranges 3 4K monitors side by side for example, as many GPUs only support up to 8192×8192 pixels.

My proposal here would be the following:

This will require creating several output windows sharing an OpenGL context, and rendering to an off-screen surface. Then glBlitFramebuffer() can be used to copy the required image parts to each output window, eventually scaling it up.

kblaschke commented 1 year ago

In addition to the above, if performance allows, projectMSDL could also run multiple projectM instances, showing each on a single monitor. This would allow showing different presets, but keeping the transitions synced.