【问题标题】:How can I run an OpenGL application installed on a linux machine from my windows machine?如何从我的 windows 机器运行安装在 linux 机器上的 OpenGL 应用程序?
【发布时间】:2008-09-19 22:41:21
【问题描述】:

本着乐于助人的精神,这是我遇到并解决的问题,所以我将在这里回答这个问题。

问题

我有:

必须在 Redhat 或 SuSE 企业上安装的应用程序。

它有巨大的系统要求,需要 OpenGL。

它是一套工具的一部分,需要在一台机器上一起运行。

此应用程序用于工时密集型任务。

我不想坐在服务器机房里处理这个应用程序。

那么,问题来了……我如何从远程 Windows 机器上运行这个应用程序?

我将概述我的解决方案。随意评论替代品。该解决方案也适用于更简单的环境。我的情况有些极端。

【问题讨论】:

    标签: linux opengl x11 sysadmin putty


    【解决方案1】:

    解决方案

    我安装了两个软件:

    PuTTY

    XMing-mesa台面部分很重要。

    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
    

    启动

    运行 Xming 这将简单地启动一个进程并在系统托盘中放置一个图标。 使用上述配置启动 putty,指向您的 linux 框。 运行程序

    希望,成功!

    【讨论】:

    • 我从来没有发现 Keepalive 设置是必要的——这可能是特定于您正在运行的某些过度保护的防火墙。
    • 这是一个非常有用的方法,但我发现我需要设置“Connection->SSH->X11->X display location: localhost:0”,而不是 localhost: 0:0 发布
    【解决方案2】:

    如果您希望在本地计算机上执行 OpenGL 渲染,使用 Windows X 服务器,例如 Xming 是一个很好的解决方案。但是,如果您希望在远程端完成渲染,只将图像发送到本地计算机,您需要一个可以处理远程 OpenGL 渲染的专用 VNC 系统,例如VirtualGL

    【讨论】:

      【解决方案3】:

      您也可以使用 VNC(如跨平台远程桌面) X 更有效,因为它只发送绘制命令而不是像素,但如果您使用的是 opengl,很可能大部分数据都是渲染图像。

      VNC 的另一大优势是您可以在服务器上本地启动程序,然后使用 VNC 连接到它,断开连接,从另一台机器重新连接等,而不会干扰主运行的程序。

      【讨论】:

      • 我试过 VNC,我在实际的 OpenGL 窗口中得到的只是一个棋盘图案。
      • 听起来opengl正在使用显卡的硬件功能。有增强的 VNC 实现用于挂钩图形驱动程序的窗口。
      • 没有服务器上的VNC不支持OpenGL的问题; Windows机器看到的所有VNC都是位图。 (我还没有看到支持 GLX 的 X11 VNC 服务器)。
      【解决方案4】:

      对于 OpenGL,运行 X 服务器绝对是更好的解决方案。只需确保将应用程序开发为联网即可。它不应该使用立即模式进行渲染,并且应该很少转移纹理。

      为什么在这种情况下 X 服务器是更好的解决方案(相对于 VNC)?因为您可以在工作站上获得加速,而 VNC 解决方案通常甚至不会在大型机上加速。因此,只要数据在 X 服务器上缓冲(使用顶点数组、顶点缓冲区对象、纹理对象等),您应该比使用 VNC 获得更高的速度,尤其是对于复杂场景,因为 VNC 必须将它们分析、传输和解码为像素。

      【讨论】:

        【解决方案5】:

        如果您需要服务器 glx 版本 1.2,Xming (Mesa 2007) 的免费版本可以正常工作。但是,如果您的应用程序需要 1.4 版,例如 qt5,Cygwin 的 X Server 可以免费使用以下命令运行它:

        [在服务器上]

        sudo vi /etc/ssh/ssh_config
        

        添加:

        X11转发是的

        X11DisplayOffset 10

        X11UseLocalHost 否

        AllowTcpForwarding 是

        TCPKeepAlive 是的

        ClientAliveInterval 30

        ClientAliveCountMax 10000

        sudo vi ~/.bashrc
        

        添加:

        export DISPLAY=ip_from_remote:0

        现在重启 ssh 服务器

        [在客户端幻灯片上]

        在运行此命令后安装Cygwin64(支持X包):

        d:\cygwin64\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/xinit /etc/X11/xinit/startxwinrc -- /usr/bin/XWin :0 -ac -multiwindow -listen tcp"
        

        现在执行 ssh 客户端:

        d:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -e /usr/bin/ssh -Y user_name@ip_from_server
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-19
          • 2011-09-26
          • 2017-09-10
          • 1970-01-01
          • 2022-07-18
          相关资源
          最近更新 更多