2008-09-19 7 views
6

Dans l'esprit d'être utile, c'est un problème que j'ai eu et résolu, alors je vais répondre à la question ici.Comment puis-je exécuter une application OpenGL installée sur une machine Linux à partir de ma machine Windows?

Problème

Je:

Une application qui doit être installé sur le RedHat ou SuSE entreprise.

Il a une énorme configuration système et nécessite OpenGL.

Il fait partie d'une suite d'outils qui doivent fonctionner ensemble sur une machine.

Cette application est utilisée pour une tâche longue en termes d'heures de travail.

Je ne veux pas m'asseoir dans la salle de serveur travaillant sur cette application. Alors, la question est venue ... comment exécuter cette application depuis une machine Windows distante?

Je décrirai ma solution. N'hésitez pas à commenter les alternatives. Cette solution devrait également fonctionner pour des environnements plus simples. Mon cas est quelque peu extrême.

+0

Vous êtes censé afficher votre solution comme une réponse pas dans le cadre de la question! –

+0

Regardez-moi, je suis stupide. Doh! – scubabbl

+0

Là, je l'ai réparé. Je me sens bête maintenant. – scubabbl

Répondre

8

Solution

J'ai installé deux logiciels: une partie

PuTTY

XMing-mesa Le mesa est important.

configuration 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 

mise à l'eau

Run Xming qui va mettre tout simplement lancer un processus et mettre une icône dans la barre d'état système. Lancer le mastic, pointant vers votre boîte Linux, avec la configuration ci-dessus. Exécuter le programme

Espérons que, Succès!

+0

Je n'ai jamais trouvé le paramètre Keepalive nécessaire - cela peut être spécifique à un pare-feu trop protecteur que vous utilisez. –

+0

J'ai déjà fait ça; vraiment utile. =] – strager

+1

Ceci est une méthode très utile, mais j'ai trouvé que pour cela ti travail je devais définir "Connection-> SSH-> X11-> X emplacement d'affichage: localhost: 0", et non localhost: 0: 0 tel que posté – RonenKi

2

Vous pouvez également utiliser VNC (comme multi-plateforme de bureau à distance) X est plus efficent puisqu'il envoie seulement dessiner des commandes plutôt que de pixels, mais si vous utilisez opengl il est probable que la plupart des données est une image rendue en tous cas. Un autre grand avantage de VNC est que vous pouvez démarrer le programme localement sur le serveur, puis vous y connecter avec VNC, abandonner la connexion, vous reconnecter à partir d'une autre machine, etc. sans perturber le programme principal.

+0

J'ai essayé VNC, tout ce que j'avais dans la fenêtre OpenGL était un damier. – scubabbl

+0

On dirait que l'opengl utilise les caractéristiques matérielles de la carte graphique. Il existe des implémentations VNC améliorées pour les fenêtres qui connectent le pilote graphique. –

+0

Pas le problème ici que le VNC sur le serveur ne supporte pas OpenGL; toutes les fenêtres machine voit avec tout VNC est un bitmap. (Je n'ai pas encore vu un serveur X11 VNC qui supporte GLX). – timday

6

Si vous voulez que le rendu OpenGL soit effectué sur votre machine locale, en utilisant un serveur Windows X, comme Xming est une bonne solution. Cependant, si vous voulez que le rendu soit effectué sur l'extrémité distante avec seulement des images envoyées à la machine locale, vous voulez un système VNC spécialisé qui peut gérer le rendu OpenGL à distance, comme VirtualGL.

0

Pour OpenGL, l'exécution d'un serveur X est définitivement la meilleure solution. Assurez-vous simplement que l'application est développée pour être mise en réseau. Il ne doit PAS utiliser le mode immédiat pour le rendu et les textures doivent être RAREMENT transférées.

Pourquoi le serveur X est-il une meilleure solution dans ce cas (par opposition à VNC)? Parce que vous obtenez une accélération sur le poste de travail, alors que la solution VNC'ed n'est généralement pas accélérée sur le mainframe. Tant que les données sont stockées sur le serveur X (en utilisant des vertex arrays, des vertex buffer objects, des objets textures, etc.) vous devriez avoir une vitesse beaucoup plus grande que VNC, surtout avec des scènes complexes puisque VNC doit les analyser, les transférer et les décoder. pixels.

Questions connexes