2008-09-19 17 views
6

W duchu bycia pomocnym, jest to problem, który miałem i rozwiązano, więc odpowiem na pytanie tutaj.Jak mogę uruchomić aplikację OpenGL zainstalowaną na komputerze z systemem Linux z mojego komputera z systemem Windows?

Problem

mam:

Aplikacja, która ma być zainstalowana na na RedHat i SuSE przedsiębiorstwie.

Ma ogromne wymagania systemowe i wymaga OpenGL.

Jest to część zestawu narzędzi, które muszą współpracować ze sobą na jednym komputerze.

Ta aplikacja jest używana do czasochłonnego zadania w zakresie roboczogodzin.

Nie chcę siedzieć w serwerowni pracującej nad tą aplikacją.

Pojawiło się pytanie ... w jaki sposób uruchomić tę aplikację ze zdalnego komputera z systemem Windows?

Opiszę moje rozwiązanie. Zapraszam do komentowania alternatyw. To rozwiązanie powinno również działać w prostszych środowiskach. Mój przypadek jest nieco ekstremalny.

+0

Masz wysłać swoje rozwiązanie jako odpowiedź, nie jako część pytania! –

+0

Spójrz na mnie, jestem głupi. Doh! – scubabbl

+0

Tam naprawiłem to. Teraz czuję się głupio. – scubabbl

Odpowiedz

8

Rozwiązanie

zainstalowałem dwa kawałki oprogramowania:

PuTTY

XMing-mesa Mesa część jest ważna.

konfiguracji PuTTY

Connection->Seconds Between Keepalives: 30 
Connection->Enable TCP Keepalives: Yes 

Connection->SSH->X11->Enable X11 forwarding: Yes 
Connection->SSH->X11->X display location: localhost:0:0 

Lauching

Uruchom Xming które będą wprowadzone po prostu rozpocząć proces i umieścić ikonę w zasobniku systemowym. Ułóż kit, wskazując na swoją skrzynkę linux, z powyższą konfiguracją. Uruchom program

Mam nadzieję, że Sukces!

+0

Nigdy nie znalazłem wymaganego ustawienia Keepalive - może to być związane z pewną, nadmiernie ochronną zaporą ogniową, którą używasz. –

+0

Zrobiłem to wcześniej; naprawdę użyteczne. =] – strager

+1

Jest to bardzo przydatna metoda, ale okazało się, że do tej pracy musiałem ustawić "Połączenie-> SSH-> X11-> X lokalizacja wyświetlania: localhost: 0", a nie localhost: 0: 0 jako opublikowane – RonenKi

2

Można również użyć VNC (podobnie jak zdalny pulpit na wielu platformach) X jest bardziej wydajny, ponieważ wysyła polecenia rysowania, a nie piksele, ale jeśli korzystasz z OpenGL, prawdopodobnie większość danych to renderowany obraz tak czy inaczej.

Inną dużą zaletą VNC jest to, że można uruchomić program lokalnie na serwerze, a następnie połączyć się z nim za pomocą VNC, zrezygnować z połączenia, ponownie połączyć się z inną maszyną itp. Bez naruszania głównego uruchomionego programu.

+0

Próbowałem VNC, wszystko, co mam w rzeczywistym oknie OpenGL, to wzór szachownicy. – scubabbl

+0

Wygląda na to, że OpenGL używa funkcji sprzętowych karty graficznej. Istnieją ulepszone implementacje VNC dla okien, które podpinają sterownik karty graficznej. –

+0

Nie ma problemu, że VNC na serwerze nie obsługuje OpenGL; wszystko, co maszyna Windows widzi z dowolnym VNC to bitmapa. (Nie widziałem jeszcze serwera X11 VNC, który obsługuje GLX). – timday

6

Jeśli chcesz, aby renderowanie OpenGL było wykonywane na komputerze lokalnym, przy użyciu serwera Windows X, tak jak Xming, jest dobrym rozwiązaniem. Jeśli jednak chcesz, aby renderowanie było wykonywane na zdalnym końcu przy użyciu obrazów przesłanych do komputera lokalnego, potrzebujesz wyspecjalizowanego systemu VNC, który może obsługiwać zdalne renderowanie OpenGL, na przykład VirtualGL.

0

Dla OpenGL uruchomienie serwera X jest zdecydowanie lepszym rozwiązaniem. Po prostu upewnij się, że aplikacja została stworzona do pracy w sieci. NIE powinien używać trybu natychmiastowego do renderowania, a tekstury powinny być RZECZYWISTE przeniesione.

Dlaczego serwer X jest lepszym rozwiązaniem w tym przypadku (w przeciwieństwie do VNC)? Ponieważ przyspieszasz na stacji roboczej, a rozwiązanie VNC nie jest zwykle jeszcze przyspieszane na komputerze mainframe. Dopóki dane są buforowane na serwerze X (przy użyciu tablic wierzchołków, obiektów bufora wierzchołków, obiektów tekstur itp.), Należy uzyskać znacznie wyższą prędkość niż przy użyciu VNC, szczególnie w przypadku złożonych scen, ponieważ VNC musi je analizować, przesyłać i dekodować jako piksele.