Назад | Перейти на главную страницу

Как можно удаленно отображать графику OpenGL с помощью VNC?

Я пытаюсь запустить программу, которая использует OpenGL для визуализации модели в окне просмотра через VNC, но безуспешно.

Я получаю следующее сообщение об ошибке - Xlib: extension "GLX" отсутствует на дисплее ": 1.0".

Насколько я понимаю, VNC можно настроить для удаленного рендеринга всей графики и отправки сжатого снимка экрана из буфера дисплея локальному клиенту. Казалось бы, это сводит на нет необходимость в расширениях GLX на локальном клиенте. Можно ли так настроить VNC и не могли бы вы вкратце описать, как?

Удаленный узел:

vncserver на RHEL 5

Местный клиент:

UltraVNC в Windows XP

Вы можете посмотреть на Виртуальный GL

Цитата: «VirtualGL - это пакет с открытым исходным кодом, который дает любому программному обеспечению удаленного отображения Unix или Linux возможность запускать приложения OpenGL с полным аппаратным ускорением 3D»

я использую x11vnc чтобы получить удаленный доступ ко всему, что отображает монитор. x11vnc общается с локальным сервером X11 и копирует фреймбуфер с сервера на клиент через vnc. Поскольку локальный сервер X11 отображает все с аппаратным ускорением, я получаю OpenGL с аппаратным ускорением поверх VNC, даже со всеми классными эффектами рабочего стола. Вот как я запускаю x11vnc:

x11vnc -rfbauth ~/.vnc/passwd  -display :0 -forever -bg -repeat -nowf -o ~/.vnc/x11vnc.log

Я думаю, что почти любой просмотрщик vnc работает, но я бы рекомендовал turbovnc или tigervnc. Сначала я попробовал VirtualGL, и он отлично работает, но не для всего рабочего стола, а только для отдельных приложений OpenGL.

Можно даже изменить разрешение на дисплее / vnc с помощью xrandr. Например. как это:

xrandr -q (to see available modes and outputs)
xrandr --output DVI-I-0 --mode "1024x768" (change mode on DVI output)

(Можно добавить новые разрешения, если доступных режимов недостаточно, но это выходит за рамки здесь.)

Итак, теперь у меня есть сеанс VNC с полностью аппаратным ускорением OpenGL и изменяемым размером.

Отключите специальный драйвер Video Hook, который использует UltraVNC, или используйте TightVNC.

Поскольку драйвер UltraVNC используется для повышения производительности, он отбрасывает любую обработку видео, выполняемую на видеокарте, например OpenGL.

Видеодрайвер, который UltraVNC устанавливает по умолчанию, делает так, что он не может отображать графику OpenGL. Обратите внимание, что отключение драйвера резко снизит производительность. Также обратите внимание, что при отображении элементов, отображаемых в OpenGL, производительность будет страдать с обеих сторон, поскольку клиентскому компьютеру теперь нужно выполнить гораздо больше работы, а требуемая полоса пропускания намного выше. Не ожидайте более 4 секунд на кадр (не 4 кадра в секунду, скорее 0,25 кадра в секунду)