我通过Ubuntu 12.04 64bit
应用程序连接远程vncviewer
。但是当我运行OpenGL
应用程序时,它会显示异常信息:
Caught exception GLShader::GLShader: GL_ARB_shader_objects not supported while initializing rendering windows
但是,如果我将显示器与远程计算机连接,它可以很好地显示OpenGL
应用程序。
是否有任何解决办法使OpenGL
应用程序在vncviewer
的远程窗口中运行?谢谢!
更新:
在远程Ubuntu 12.04 64bit
服务器中,~/.vnc/xstartup
文件如下:
VNC Viewer
系统中的Windows 7 32bit
客户端如下:
答案 0 :(得分:2)
通常在Linux上,VNC服务器是Xorg X11服务器(Xvnc)的专用变体,它使用基于软件的渲染器后端并且没有GPU加速。我猜您使用的是NVidia GPU和NVidia专有驱动程序,或者采用AMD专有驱动程序的AMD GPU,因为否则Mesa softpipe实施就会启动。
如果你真的想要使用GPU,你必须将VNC转换为正在运行的X11会话,并启动x11vnc服务器。
首先,要使GPU工作,X服务器必须运行并且将其输出发送到显示连接器。对不起,目前的驱动程序型号不允许纯粹的屏幕外GPU加速X11服务器;这不是硬件的限制,而只是Xorg X11服务器的实现。这也意味着,无论您将显示器连接到屏幕的人都可以看到您正在做的任何事情。至少我们可以照顾,没有人用鼠标和键盘搞砸。
首先要创建一个由此组成的自定义/etc/X11/xorg.vnc.conf
Section "ServerFlags"
Option "AllowEmptyInput" "true"
Option "AutoAddDevices" "off"
Option "DontZap" "false"
Option "DontVTSwitch" "true"
Option "HandleSpecialKeys" "Never"
EndSection
Section "Device"
Identifier "DeviceGPU"
Driver "nvidia"
EndSection
接下来,实现一个脚本stat启动您想要在该特定X11会话中运行的所有内容。大多数情况下,这将启动x11vnc服务器然后执行到桌面环境中,例如
。#!/bin/sh
x11vnc -display $DISPLAY &
exec startxfce4 # or whatever
我将向您推荐x11vnc的联机帮助页,了解如何配置要使用的身份验证。
最后你应该检查Xorg服务器二进制文件是SUID root; NVidia驱动程序仍未充分利用KMS,并依赖于以完全权限启动的X服务器。
一旦满足这些先决条件,您就可以使用
启动支持VNC的X11会话xinit $FULL_PATH_TO_YOUR_SESSION_SCRIPT -- $DISPLAY -config xorg.vnc.conf
其中$DISPLAY
是免费的X11显示号码。