Como os gráficos OpenGL podem ser exibidos remotamente usando o VNC?

22

Eu estou tentando executar um programa que usa o OpenGL para renderizar um modelo em uma viewport através do VNC sem sucesso.

A mensagem de erro que recebo é - Xlib: extensão "GLX" faltando no display ": 1.0".

Entendi que o VNC pode ser configurado para renderizar todos os gráficos remotamente e enviar uma captura de tela compactada do buffer de exibição para o cliente local. Isso parece negar a necessidade de extensões GLX no cliente local. O VNC pode ser configurado dessa maneira e você poderia descrever brevemente como?

Host remoto:

vncserver no RHEL 5

Cliente local:

UltraVNC no Windows XP

    
por Jared Brown 24.08.2010 / 19:50

3 respostas

16

Você pode querer olhar para Virtual GL

Quote: "O VirtualGL é um pacote de código aberto que oferece a qualquer software de exibição remota Unix ou Linux a capacidade de executar aplicativos OpenGL com aceleração completa de hardware 3D"

    
por 21.12.2010 / 11:31
13

Estou usando x11vnc para obter acesso remoto ao que quer que o monitor esteja exibindo. O x11vnc fala com o servidor X11 local e copia o framebuffer do servidor para o cliente via vnc. Como o servidor X11 local renderiza tudo com aceleração de hardware, eu obtenho o OpenGL acelerado por hardware sobre VNC, mesmo com todos os efeitos legais da área de trabalho. É assim que eu inicio x11vnc:

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

Acho que quase qualquer visualizador de vnc funciona, mas eu recomendo turbovnc ou tigervnc. Eu tentei o VirtualGL primeiro, e ele funciona bem, mas não para toda a área de trabalho, apenas para aplicativos OpenGL individuais.

É até possível alterar a resolução no display / vnc usando xrandr. Por exemplo. assim:

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

(É possível adicionar novas resoluções se os modos disponíveis não forem suficientes, mas isso está fora do escopo aqui.)

Agora, tenho uma sessão VNC totalmente acelerada e redimensionável em hardware OpenGL.

    
por 13.02.2013 / 09:37
1

Desabilite o driver especial Video Hook que o UltraVNC usa ou use o TightVNC.

Como o driver UltraVNC é usado para melhorar o desempenho, ele elimina qualquer tipo de processamento de vídeo feito na placa de vídeo, como o OpenGL.

O driver de vídeo que o UltraVNC instala por padrão, faz com que ele não exiba os gráficos OpenGL. Observe que desabilitar o driver diminuirá drasticamente o desempenho. Observe também que, embora a exibição de itens renderizados no desempenho do OpenGL sofra em ambas as extremidades, já que a máquina cliente agora tem muito trabalho a ser feito e a largura de banda necessária é muito maior. Não espere nada além de 4 segundos por quadro (não 4 qps, mais como 0,25 qps)

    
por 24.08.2010 / 20:33