Как можно отображать графику OpenGL удаленно с помощью VNC?
Я пытаюсь запустить программу, которая использует OpenGL для рендеринга модели в области просмотра через VNC безуспешно.
Я получаю сообщение об ошибке - Xlib: расширение "GLX" отсутствует на дисплее ":1.0".
Насколько я понимаю, VNC можно настроить для удаленной визуализации всей графики и отправки сжатого снимка экрана из буфера дисплея локальному клиенту. Это, казалось бы, сводит на нет необходимость в расширениях GLX на локальном клиенте. Можно ли настроить VNC таким образом, и не могли бы вы кратко описать, как?
Удаленный узел:
vncserver на RHEL 5
Локальный клиент:
UltraVNC в Windows XP
3 ответа
Я использую 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)
(Можно добавить новые разрешения, если доступных режимов недостаточно, но это выходит за рамки здесь.)
Так что теперь у меня есть полностью OpenGL аппаратно ускоренный и изменяемый размер сеанса VNC.
Вы можете посмотреть на Virtual GL
Цитата: "VirtualGL - это пакет с открытым исходным кодом, который дает любому программному обеспечению для удаленного отображения Unix или Linux возможность запуска приложений OpenGL с полным аппаратным ускорением 3D"
Отключите специальный драйвер Video Hook, который использует UltraVNC, или используйте TightVNC.
Поскольку драйвер UltraVNC используется для повышения производительности, он отбрасывает любую обработку видео, выполняемую на видеокарте, например OpenGL.
Видеодрайвер, который UltraVNC устанавливает по умолчанию, позволяет не отображать графику OpenGL. Обратите внимание, что отключение драйвера резко снизит производительность. Также обратите внимание, что при отображении элементов, отображаемых в OpenGL, производительность будет снижаться с обеих сторон, поскольку клиентскому компьютеру теперь предстоит выполнить гораздо больше работы, а требуемая пропускная способность намного выше. Не ожидайте ничего более 4 секунд на кадр (не 4 кадра в секунду, больше как 0,25 кадра в секунду)