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

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

Сообщение об ошибке, которое я получаю, - Xlib: расширение «GLX» отсутствует на дисплее «: 1.0».

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

Удаленный хост:

vncserver на RHEL 5

Локальный клиент:

UltraVNC в Windows XP

22 голоса | спросил Jared Brown 1 Jam1000000amThu, 01 Jan 1970 03:00:00 +030070 1970, 03:00:00

3 ответа


16

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

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

ответил Vadim 27 Maypm09 2009, 16:47:42
13

Я использую 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.

ответил Vadim 27 Maypm09 2009, 16:47:42
1

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

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

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

ответил Vadim 27 Maypm09 2009, 16:47:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132