Frage Wie können OpenGL-Grafiken mit VNC remote angezeigt werden?


Ich versuche, ein Programm auszuführen, das OpenGL verwendet, um ein Modell in einem Ansichtsfenster durch VNC nicht erfolgreich zu rendern.

Die Fehlermeldung, die ich erhalte, ist - Xlib: Erweiterung "GLX" fehlt auf dem Display ": 1.0".

Nach meinem Verständnis kann VNC so konfiguriert werden, dass alle Grafiken remote gerendert werden und eine komprimierte Bildschirmaufnahme vom Anzeigepuffer an den lokalen Client gesendet wird. Dies scheint die Notwendigkeit von GLX-Erweiterungen auf dem lokalen Client zu negieren. Kann VNC auf diese Weise konfiguriert werden und könnten Sie kurz beschreiben, wie?

Remote-Host:

vncserver auf RHEL 5

Lokaler Kunde:

UltraVNC unter Windows XP


22
2017-08-24 17:50


Ursprung


Funktioniert das OpenGL-Programm lokal auf der RH # L5-Konsole? Wird es per Fernzugriff über X-Windows funktionieren? Wenn nicht, funktioniert es nicht mit VNC. - kmarsh
Warum ist das ein Community Wiki? - Chris S
Ich dachte, wenn es ein Community-Wiki wäre, könnten die Leute die Frage bearbeiten, um sie für die Archivierung relevanter zu machen. - Jared Brown


Antworten:


Vielleicht möchten Sie sich das ansehen Virtueller GL

Zitat: "VirtualGL ist ein Open-Source-Paket, mit dem jede Unix- oder Linux-Remote-Display-Software OpenGL-Anwendungen mit voller 3D-Hardwarebeschleunigung ausführen kann"


16





Ich benutze x11vnc Fernzugriff auf alles, was der Monitor anzeigt. x11vnc spricht mit dem lokalen X11-Server und kopiert den Framebuffer vom Server über vnc zum Client. Da der lokale X11-Server alles mit Hardwarebeschleunigung rendert, bekomme ich Hardware-beschleunigtes OpenGL über VNC, sogar mit all den coolen Desktop-Effekten. So starte ich x11vnc:

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

Ich denke fast jeder vnc-viewer funktioniert, aber ich würde turbovnc oder tigervnc empfehlen. Ich habe VirtualGL zuerst versucht, und es funktioniert gut, aber nicht für den ganzen Desktop, nur für einzelne OpenGL-Anwendungen.

Es ist sogar möglich, die Auflösung auf dem Display / VNC mit Xrandr zu ändern. Z.B. so was:

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

(Es ist möglich, neue Auflösungen hinzuzufügen, wenn die verfügbaren Modi nicht ausreichen, aber das ist hier nicht der Fall.)

So, jetzt habe ich eine voll OpenGL hardwarebeschleunigte und resizierbare VNC-Sitzung.


13



Versuchte diesen Ansatz mit xfce4 und Blender auf einer Tesla K80 GCE Maschine ... es funktionierte einwandfrei. Gnome-Shell würde immer noch nicht richtig angezeigt, wie immer. askubuntu.com/questions/229989/ ... - Ray Foss


Deaktivieren Sie den speziellen Video Hook-Treiber, den UltraVNC verwendet, oder verwenden Sie TightVNC.

Da der UltraVNC-Treiber verwendet wird, um die Leistung zu verbessern, löscht er jegliche Art von Videoverarbeitung, die auf der Videokarte ausgeführt wird, wie OpenGL.

Der Videotreiber, dass UltraVNC dies standardmäßig installiert, macht es so, dass es OpenGL-Grafiken nicht anzeigen kann. Beachten Sie, dass die Deaktivierung des Treibers die Leistung drastisch verringert. Beachten Sie auch, dass die Anzeige von in OpenGL gerenderten Elementen an beiden Enden leidet, da der Client-Rechner nun viel mehr zu tun hat und die benötigte Bandbreite viel höher ist. Erwarte nichts über 4 Sekunden pro Frame (nicht 4 fps, eher wie 0,25 fps)


1



Wenn Sie den Video-Hook in UltraVNC deaktivieren, beziehen Sie sich auf den lokalen Client? Wäre nicht der vncserver auf dem Remote-Host konfiguriert werden müssen? - Jared Brown
Nein, ich meine den lokalen Kunden. UltraVNC enthält einen Videotreiber, der mit ihm installiert wird. Sofern Sie nicht ausdrücklich etwas anderes sagen, versucht der Grafiktreiber, das gesamte Video auf dem Client-Computer zu verarbeiten, damit es komprimiert und für die Verwendung über das Netzwerk gestreamt werden kann. Manchmal ist es möglich, im Viewer anzugeben, dass Sie diese Funktion nicht verwenden möchten, aber UltraVNC (zumindest in der Vergangenheit) neigt dazu, dies zu ignorieren. - IceMage
Fern und lokal hängen auch von Ihrer Perspektive ab. Wenn ich local sage, meine ich wirklich den Host (der Computer, der nach neuen Verbindungen horcht), und Remote bedeutet den Computer, der die Verbindung herstellt. Ich werde das für zukünftige Beiträge korrigieren. - IceMage
OK - Ich denke, ich benutze die andere Sprache. Als ich den UltraVNC-Viewer installiert habe, glaube ich nicht, dass ein Videotreiber installiert wurde. Der UltraVNC-Server, den ich kenne, tut das, aber ich benutze das nicht. Ich benutze vncserver auf einem RHEL5-Rechner als Host. - Jared Brown
Meine eigentliche Frage ist, wie konfiguriere ich vncserver, um keine GLX-Befehle zu senden, sondern einfach einen komprimierten Bildschirm vom Anzeigepuffer an den UltraVNC-Viewer zu senden? - Jared Brown