Eu tenho um PC (cliente) fraco, mas com desempenho 3D aceitável, e um PC (servidor) forte, que deve ser capaz de executar um aplicativo usando o OpenGL duas vezes, ou seja, uma vez localmente e uma vez remotamente para o cliente. Atualmente, gosto ssh -X
dele, mas a saída do console do cliente indica a renderização do software e eu recebo apenas 3 quadros por segundo (fps). Na verdade, a criptografia do ssh não é necessária, pois é em uma LAN, mas é o que eu já sei para aplicativos remotos ...
Então, como o desempenho do cliente pode ser aumentado? Minhas idéias são
- use a aceleração de hardware, mas a do servidor ou do cliente e como?
- use algo diferente de ssh
Eu sei que, em resolução total e sem compactação sofisticada, uma LAN de 100 Mbit / s não produz mais fps, mas é uma aplicação em janelas de ca. 800x450, portanto teoricamente até 12 fps (a 24 bits / pixel) deve ser possível usando dados gráficos não compactados. E talvez seja possível algo melhor usando a GPU do cliente ou alguma compactação inteligente.
-
edit Acontece que o que eu quero é basicamente uma versão local do que, por exemplo, o onlive e o gaikai oferece. Existe algo parecido com isto para Linux (e possivelmente gratuito)?
-
edit2 O VirtualGL parece a melhor solução (embora atualmente não esteja funcionando para mim), mas gostaria de saber se é possível fazer renderização de hardware no cliente também
Respostas:
Você pode conferir o VirtualGL junto com o TurboVNC e fornecer 20fps a 1280x1024 em 100 Mbit ( consulte a Wikipedia ).
Observe que ele pode não funcionar com todos os aplicativos, depende de como eles usam o OpenGL.
fonte
Esta é uma pergunta antiga, mas ainda é relevante. Há um manual passo a passo sobre como configurar e solucionar problemas da renderização 3D X11 do aplicativo remoto no hardware local: Aceleração do hardware OpenGL por meio da conexão remota x11 ssh
O jogo Chromium BSU é usado no artigo como exemplo. É executado com 5-8 FPS com renderização de software padrão por meio de conexão SSH, 30 FPS com renderização indireta de hardware e> 30 FPS com conexão TCP X11 não criptografada. Observe que ele funciona apenas para alguns aplicativos.
Breve resumo do artigo
A renderização indireta e as conexões TCP estão desabilitadas na configuração padrão do servidor X11.
+iglx and -listen tcp
parâmetros habilitá-los. Também existe umaLIBGL_ALWAYS_INDIRECT=1
variável que força a renderização indireta no cliente X11.fonte
lightdm
comiglx
" tal). No momento, não preciso mais disso, mas vou tentar na próxima vez;) Talvez alguém também ache suas descobertas úteis.Isso pode ser verdade se você tiver dois PCs de mesa. Mas se você tem um laptop WiFi antigo que pode ser usado em qualquer lugar de sua casa (por exemplo, Ti5600 com Ubuntu 10.04 como seu cliente, e um PC de mesa com uma placa GTX junto com um roteador Wi-Fi sobressalente, é recomendável ter um cliente OpenGL remoto.
O problema está em obter um contexto OpenGL remoto (do lado do servidor). Você pode executar o ssh -X no seu cliente. Porém, se você executar o glxinfo no sistema remoto, obterá o seu cliente local, o que o colocará de volta onde você começou. Você pode definir sua variável de ambiente DISPLAY para esse host remoto e usar essa tela como um segundo monitor, o que ainda não ajuda.
Uma outra solução é escrever seus aplicativos de desktop para que eles possam usar um contexto GLX remoto:
http://arrayfire.com/remote-off-screen-rendering-with-opengl/
fonte