Ich habe einen schwachen PC (Client) mit akzeptabler 3D-Leistung und einen starken PC (Server), der in der Lage sein sollte, eine Anwendung mit OpenGL zweimal auszuführen, dh einmal lokal und einmal remote für den Client. Derzeit bin ich ssh -X
dabei, aber die Konsolenausgabe des Clients gibt an, dass Software-Rendering verwendet wird und ich nur 3 Bilder pro Sekunde (fps) erhalte. Eigentlich ist die Verschlüsselung von ssh nicht erforderlich, da dies in einem LAN geschieht, aber das weiß ich bereits für Remote-Anwendungen ...
Wie kann die Kundenleistung gesteigert werden? Meine Ideen sind
- Verwenden Sie die Hardwarebeschleunigung, aber die des Servers oder des Clients und wie?
- benutze etwas anderes als ssh
Ich weiß, in voller Auflösung und ohne ausgefeilte Komprimierung wird ein 100-Mbit / s-LAN nicht mehr fps erzeugen, aber es ist eine Fensteranwendung von ca. 800x450, daher sollten theoretisch bis zu 12 fps (bei 24 Bit / Pixel) mit unkomprimierten grafischen Daten möglich sein. Und vielleicht ist etwas Besseres mit der GPU des Clients oder einer intelligenten Komprimierung möglich.
- -
edit Es stellt sich heraus, dass ich im Grunde eine lokale Version dessen sein möchte, was zB onlive und gaikai bieten. Gibt es so etwas für Linux (und möglicherweise kostenlos)?
- -
edit2 VirtualGL scheint die beste Lösung zu sein (obwohl es derzeit nicht für mich funktioniert), aber ich frage mich, ob es möglich ist, Hardware-Rendering auch auf dem Client durchzuführen
Antworten:
Sie können VirtualGL zusammen mit TurboVNC auschecken, um 20 fps @ 1280x1024 auf 100 Mbit zu erhalten ( siehe Wikipedia ).
Beachten Sie, dass es möglicherweise nicht mit allen Anwendungen funktioniert. Dies hängt davon ab, wie sie OpenGL verwenden.
quelle
Dies ist eine alte Frage, aber sie ist immer noch relevant. Es gibt eine Schritt-für-Schritt-Anleitung zum Konfigurieren und Beheben von Problemen mit X11 3D-Rendering von Remote-Anwendungen auf lokaler Hardware: OpenGL-Hardwarebeschleunigung über Remote-x11-SSH-Verbindung
Das Chromium BSU-Spiel wird im Artikel als Beispiel verwendet. Es läuft mit 5-8 FPS mit Standard-Software-Rendering über SSH-Verbindung, 30 FPS mit indirektem Hardware-Rendering und> 30 FPS mit unverschlüsselter TCP X11-Verbindung. Beachten Sie, dass dies nur für einige Anwendungen funktioniert.
Kurze Zusammenfassung des Artikels
Indirektes Rendern und TCP-Verbindungen sind in der Standardkonfiguration des X11-Servers deaktiviert.
+iglx and -listen tcp
Parameter aktivieren sie. Es gibt auch eineLIBGL_ALWAYS_INDIRECT=1
Variable, die das indirekte Rendern auf dem X11-Client erzwingt.quelle
lightdm
mitiglx
" verwenden). Ich brauche das momentan nicht mehr, aber ich werde es das nächste Mal versuchen;) Vielleicht findet auch jemand anderes Ihre Ergebnisse hilfreich.Dies kann zutreffen, wenn Sie zwei Desktop-PCs haben. Wenn Sie jedoch einen alten WLAN-Laptop haben, der überall zu Hause verwendet werden kann (z. B. Ti5600 mit Ubuntu 10.04 als Client), und einen Desktop-PC mit einer GTX-Karte und einem Ersatz-WLAN-Router, ist es eine gute Idee, einen Remote-OpenGL-Client zu haben.
Das Problem besteht darin, einen Remote-OpenGL-Kontext (serverseitig) abzurufen. Sie können ssh -X auf Ihrem Client ausführen. Wenn Sie jedoch glxinfo auf dem Remote-System ausführen, erhalten Sie Ihren lokalen Client, der Sie dorthin zurückbringt, wo Sie begonnen haben. Sie können Ihre DISPLAY-Umgebungsvariable auf diesen Remote-Host einstellen und diesen Bildschirm als zweiten Monitor verwenden, was immer noch nicht hilft.
Eine andere Lösung besteht darin, Ihre Desktopanwendungen so zu schreiben, dass sie einen Remote-GLX-Kontext verwenden können:
http://arrayfire.com/remote-off-screen-rendering-with-opengl/
quelle