Два окна в полноэкранном режиме на двух разных экранах - PullRequest
1 голос
/ 26 апреля 2010

На самом деле я работаю над приложением для отображения изображения на куполе.

Купольная проекционная система состоит из двух проекторов и компьютера под управлением GentoO Linux и KDE с системой nvidia TwinView.

Так как здесь я использовал SDL для отображения полноэкранных окон, и он отображал мое приложение на двух экранах.

Но я просто подумал, что мне нужно проецировать два разных изображения, по одному на каждый проектор.

Вот почему я ищу решение для отображения полноэкранного окна на первом экране (проектор), а другое - на втором. Но SDL в полноэкранном режиме просто расширяет окно до двух экранов.

Я могу использовать любую библиотеку (так как она легкая и бесплатная, так как я заверну ее в мой маленький «API»), или изменить настройки отображения. Кстати, было бы неплохо иметь поддержку openGL, так как SDL управляет только одним окном ^^ "

Ответы [ 3 ]

1 голос
/ 15 мая 2010

Я думаю, у меня есть решение для вас. Вы должны указать все, что связано с USE-флагом xinerama. Затем установите мета-режимы в вашей конфигурации X или используя nvidia-settings для каждого экрана. Это делает ваши мониторы похожими на один экран для драйвера, но информирует оконный менеджер о ваших независимых границах экрана. Теперь вы можете перетаскивать назад и вперед из окна в окно, и вы можете сделать и независимый полноэкранный режим для каждого. Ура!

Примечание: я успешно проверил это на Gnome, но пока не KDE.

Удачи!

Изменить: забыл упомянуть, что вам все еще нужно выяснить, как заставить ваше приложение быть в мета-режиме. : Р

1 голос
/ 21 июня 2010

Хороший трюк, но это не совсем решение.

Вместо этого вам нужно использовать SDL 1.3 (не реализовано в 1.2) и вызывать SDL_SelectVideoDisplay (index_of_mmonitor) (обычно 0 для первого монитора и 1 для второго), чтобы вы могли направить выходные данные своей работы SDL на предпочитаемый экран (полноэкранный или нет) .

Привет.

0 голосов
/ 26 апреля 2010

Я предполагаю, что SDL (или, скорее, OpenGL , или все, что используется для отображения графики) считает, что у вас есть только один большой экран.

Поэтому показывать две разные вещи на разных экранах не имеет смысла (поскольку у вас есть только один экран).

Может быть, я ошибаюсь, но вы должны попытаться использовать отдельные рабочие столы X для этого. Я сейчас не на своей Linux-машине, поэтому я не могу помочь так сильно, как мог бы, но если я хорошо помню, был вариант иметь два разных рабочих стола без двух разных X-серверов.

Другим «решением» будет вычисление координат / границ ваших экранов и умное отображение вещей на вашем эмулированном экране, но:

  1. Это ужасно
  2. Ошибка склонна
  3. мне не нравится
...