Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement multi-monitor rendering support #58

Open
kblaschke opened this issue Apr 1, 2023 · 1 comment
Open

Implement multi-monitor rendering support #58

kblaschke opened this issue Apr 1, 2023 · 1 comment
Labels
enhancement New feature or request

Comments

@kblaschke
Copy link
Member

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:

  • Let the user configure on which displays projectM should be rendered on, ideally remembering the display name or port if we can get this from SDL.
  • Let the user decide to either stretch or clone the output to the selected displays. Cloning is nice for beamer/LED screen display with a local reference monitor.
  • For stretching, add a render resolution selection. If automatic, check maximum texture size and limit the render size accordingly, then stretch as needed.
  • One output window should be the main one, which will render the UI.

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 kblaschke added the enhancement New feature or request label Apr 1, 2023
@kblaschke
Copy link
Member Author

kblaschke commented Nov 27, 2023

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant