Ich versuche, eine OpenGL 2.1+-Anwendung über SSH auszuführen.
[mein Computer] --- SSH-Verbindung --- [Remote-Rechner] (Anwendung)
Ich verwende X-Forwarding, um diese Anwendung auszuführen, und in diesem Sinne denke ich, dass es für diese Anwendung mehrere Möglichkeiten gibt, 3D-Grafiken zu erstellen:
- Mit LIBGL_ALWAYS_INDIRECT kann die Grafikhardware meines Rechners genutzt werden.dieser BeitragDies ist im Allgemeinen auf OpenGL Version 1.4 beschränkt.
- Verwenden der Mesa-Software-Rendering auf dem Remote-Computer. Dies unterstützt höhere Versionen von OpenGL, nutzt aber die CPU.
In meinem Fall verfügt der Remote-Computer jedoch über eine anständige Grafikkarte. AnstattSoftwareRendering, ich habe mich gefragt, ob es das könnteHardwarestattdessen Remote-Rendering.
Wenn es außerdem eine andere Möglichkeit gäbe, die Grafikkarte meines Computers zu verwenden, wäre das auch großartig.
Antwort1
Die Wahl besteht nicht unbedingt zwischen indirektem Rendering und Software-Rendering, sondern genauer zwischen direktem und indirektem Rendering. Direktes Rendering wird auf dem X-Client (dem Remote-Rechner) durchgeführt, dann werden die Rendering-Ergebnisse zur Anzeige an den X-Server übertragen. Indirektes Rendering überträgt GL-Befehle an den X-Server, wo diese Befehle mithilfe der Hardware des Servers gerendert werden. Da Sie die 3D-Hardware auf dem Remote-Rechner verwenden möchten, sollten Sie sich für direktes Rendering entscheiden (und den Mehraufwand bei der Übertragung des gerenderten Rasterbilds über das Netzwerk in Kauf nehmen).
Wenn Ihre Anwendung nicht mit OpenGL 1.4 auskommt, ist direktes Rendering Ihre einzige Option.
Antwort2
Früher hatte ich ein SSH-Remote-Setup, um den gepatchten OpenGL-Treiber auszuführen. Aber das beinhaltete einige Hacks, wie das Kapern eines Remote-X-Servers zum Rendern (Anmeldung bei Remote-Rechner, SSH-Anmeldung und DISPLAY auf :0 setzen). In Ihrem Fall ist es sinnvoller, den Offscreen-X-Server zu trennen. Ich weiß nicht mehr, ob es möglich ist, den X-Server remote im Offscreen-Modus, aber mit geladenen GPU-Treibern zu starten. Das VirtualGL-Projekt scheint zu versprechen, dass es genau das unterstützt, wonach Sie suchen. Ich habe es noch nie ausprobiert, aber die Website sieht vielversprechend aus.
http://www.virtualgl.org/About/Introduction
Andere Alternativen sind VNC und XDMCP. Sie ermöglichen den Zugriff auf eine komplette Remote-Desktop-Umgebung.