web-dev-qa-db-fra.com

Comment les graphiques OpenGL peuvent-ils être affichés à distance à l'aide de VNC?

J'essaie d'exécuter un programme qui utilise OpenGL pour restituer un modèle dans une fenêtre via VNC sans succès.

Le message d'erreur que je reçois est - Xlib: extension "GLX" manquante sur l'affichage ": 1.0".

J'ai cru comprendre que VNC peut être configuré pour afficher tous les graphiques à distance et envoyer une capture d'écran compressée du tampon d'affichage au client local. Cela semblerait annuler le besoin d'extensions GLX sur le client local. VNC peut-il être configuré de cette façon et pourriez-vous décrire brièvement comment?

Hôte distant:

vncserver sur RHEL 5

Client local:

UltraVNC sur Windows XP

25
Jared Brown

Vous voudrez peut-être regarder Virtual GL

Citation: "VirtualGL est un package open source qui donne à n'importe quel logiciel d'affichage à distance Unix ou Linux la possibilité d'exécuter des applications OpenGL avec une accélération matérielle 3D complète"

17
totaam

J'utilise x11vnc pour accéder à distance à tout ce que le moniteur affiche. x11vnc parle au serveur X11 local et copie le framebuffer du serveur au client via vnc. Étant donné que le serveur X11 local restitue tout avec une accélération matérielle, j'obtiens une accélération matérielle OpenGL sur VNC, même avec tous les effets de bureau sympas. Voici comment je démarre x11vnc:

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

Je pense que presque n'importe quel visualiseur vnc fonctionne, mais je recommanderais turbovnc ou tigervnc. J'ai d'abord essayé VirtualGL, et cela fonctionne bien, mais pas pour l'ensemble du bureau, uniquement pour les applications OpenGL individuelles.

Il est même possible de changer la résolution sur l'affichage/vnc en utilisant xrandr. Par exemple. comme ça:

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

(Il est possible d'ajouter de nouvelles résolutions si les modes disponibles ne suffisent pas, mais cela sort du cadre ici.)

Alors maintenant, j'ai une session VNC accélérée et redimensionnable entièrement OpenGL.

14
Henrik

Désactivez le pilote spécial Video Hook qu'UltraVNC utilise ou utilisez TightVNC.

Étant donné que le pilote UltraVNC est utilisé pour améliorer les performances, il supprime tout type de traitement vidéo effectué sur la carte vidéo, comme OpenGL.

Le pilote vidéo qu'UltraVNC installe cela par défaut, il le fait de sorte qu'il ne peut pas afficher les graphiques OpenGL. Notez que la désactivation du pilote diminuera considérablement les performances. Notez également que l'affichage des éléments rendus en OpenGL souffrira aux deux extrémités, car la machine cliente a maintenant beaucoup plus de travail à faire et la bande passante requise est beaucoup plus élevée. Ne vous attendez à rien de plus de 4 secondes par image (pas 4 images par seconde, plutôt 0,25 image par seconde)

1
IceMage