Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从windows机器运行安装在linux机器上的OpenGL应用程序?_Linux_Opengl_X11_Sysadmin_Putty - Fatal编程技术网

如何从windows机器运行安装在linux机器上的OpenGL应用程序?

如何从windows机器运行安装在linux机器上的OpenGL应用程序?,linux,opengl,x11,sysadmin,putty,Linux,Opengl,X11,Sysadmin,Putty,本着乐于助人的精神,这是我遇到并解决的问题,因此我将在这里回答这个问题 问题 我有: 必须安装在Redhat或SuSE enterprise上的应用程序 它有巨大的系统需求,需要OpenGL 它是需要在一台机器上一起操作的一套工具的一部分 此应用程序用于工时密集型任务 我不想坐在服务器室处理这个应用程序 所以,问题来了。。。如何从远程windows计算机运行此应用程序 我将概述我的解决方案。请随意评论备选方案。此解决方案也适用于更简单的环境。我的情况有些极端。解决方案 Connection-&g

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

问题

我有:

必须安装在Redhat或SuSE enterprise上的应用程序

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

它是需要在一台机器上一起操作的一套工具的一部分

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

我不想坐在服务器室处理这个应用程序

所以,问题来了。。。如何从远程windows计算机运行此应用程序


我将概述我的解决方案。请随意评论备选方案。此解决方案也适用于更简单的环境。我的情况有些极端。

解决方案

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
我安装了两个软件:

台面部分很重要

腻子配置

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,它将简单地启动一个进程并在系统托盘中放置一个图标。 使用上面的配置,指向linux机箱启动putty。 运行程序

希望,成功

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


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

如果希望在本地计算机上执行OpenGL渲染,使用Windows X服务器(如Xming)是一个很好的解决方案。但是,如果您希望在远程端仅使用发送到本地计算机的图像进行渲染,则需要一个能够处理远程OpenGL渲染的专用VNC系统,例如。

对于OpenGL,运行X服务器肯定是更好的解决方案。只需确保应用程序的开发是网络化的。它不应该使用即时模式进行渲染,纹理应该很少传输


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

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

[在服务器上]

sudo vi /etc/ssh/ssh_config
加:

X11正向是

X11显示偏移量10

X11SELOCALHOST编号

允许转发是

是的

ClientAliveInterval 30

ClientAliveCountMax 10000

加:

export DISPLAY=ip\u from\u remote:0

现在重新启动ssh服务器

[在客户幻灯片上]

安装(支持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

我试过VNC,我在实际的OpenGL窗口中得到的只是一个棋盘格图案。听起来OpenGL使用的是图形卡的硬件功能。有针对windows的增强VNC实现,这些实现钩住了图形驱动程序。没有问题,服务器上的VNC不支持OpenGL;windows机器在任何VNC中看到的都是位图。(我还没有看到支持GLX的X11 VNC服务器)。我从来没有发现Keepalive设置是必要的-这可能是特定于您正在运行的某些过度保护的防火墙。这是一个非常有用的方法,但我发现对于它,我需要设置“连接->SSH->X11->X显示位置:localhost:0”,而不是发布的localhost:0:0