Як графіка OpenGL може відображатися віддалено за допомогою VNC?


24

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

Я отримую повідомлення про помилку - Xlib: розширення "GLX" відсутнє на дисплеї ": 1,0".

Як я розумію, VNC може бути налаштований віддалено відтворювати всю графіку та відправляти стиснене захоплення екрана з буфера дисплея локальному клієнту. Це, мабуть, заперечує потребу в розширеннях GLX для локального клієнта. Чи можна налаштувати VNC таким чином і чи можете ви коротко описати, як?

Віддалений хост:

vncserver на RHEL 5

Місцевий клієнт:

UltraVNC на Windows XP


Чи буде програма OpenGL працювати локально на консолі RH # L5? Чи буде це працювати віддалено через X-Windows? Якщо ні, то він не працюватиме на VNC.
kmarsh

2
Чому це спільнота Wiki?
Chris S

Я думав, що якщо б це вікі спільноти, люди могли б відредагувати питання, щоб зробити його більш актуальним для архіву.
Джаред Браун

Відповіді:


17

Ви можете подивитися на Virtual GL

Цитата: "VirtualGL - це пакет з відкритим кодом, який надає будь-якому програмному забезпеченню віддаленого дисплея Unix або Linux можливість запускати програми OpenGL з повним 3D-апаратним прискоренням"


14

Я використовую 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.


1
Спробував цей підхід за допомогою xfce4 та блендера на машині Tesla K80 GCE ... він працював бездоганно. Як і завжди, Gnome-shell все ще не відображатиметься належним чином. askubuntu.com/questions/229989/…
Рей Фосс

1

Вимкніть спеціальний драйвер Video Hook, який використовує UltraVNC, або використовуйте TightVNC.

Оскільки драйвер UltraVNC використовується для підвищення продуктивності, він скасовує будь-яку обробку відео, виконану на відеокарті, наприклад OpenGL.

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


Якщо ви скажете відключити відео-гачок в UltraVNC, ви посилаєтесь на місцевого клієнта? Чи не повинен замість цього налаштувати vncserver, що працює на віддаленому хості?
Джаред Браун

Ні, я маю на увазі місцевого клієнта. UltraVNC включає в себе відеодрайвер, який встановлений разом з ним. Якщо ви прямо не скажете інше, драйвер відео намагатиметься обробити все відео на клієнтському кінці, щоб він міг стискати та передавати його для використання по мережі. Іноді можна вказати на глядача, що ви не хочете користуватися цією функцією, але UltraVNC (принаймні, раніше) має тенденцію ігнорувати це.
IceMage

Крім того, віддалені та локальні залежать від вашої точки зору. Коли я кажу локальний, я дійсно маю на увазі хост (комп'ютер, який слухає нові з'єднання) та віддалений, тобто комп'ютер, який здійснює з'єднання. Я виправлю це для майбутніх постів.
IceMage

Гаразд - я думаю, я використовую протилежний лінгво. Коли я встановив програму перегляду UltraVNC, я не вірю, що в ньому встановлено відеодрайвер. Сервер UltraVNC, про який я знаю, так і працює, але я цим не користуюся. Я використовую vncserver на машині RHEL5 в якості хоста.
Джаред Браун

Отже, моє справжнє запитання полягає в тому, як мені налаштувати vncserver не надсилати команди GLX, а надіслати просто стислий екран з буфера дисплея на переглядач UltraVNC?
Джаред Браун
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.