让 WebGL 在 Amazon EC2 服务器上运行

Pep*_*ijn 8 nvidia xorg webgl amazon-ec2 12.04

我正在尝试让 WebGL 在我的 Amazon EC2 服务器上工作(从办公室绑定的 Mac Mini 迁移,它有很多小问题)。

工作了几天才能让它运行,但我会尝试从我开始的地方开始。

首先,我安装了以下Ubuntu Server 12.04 LTS (HVM) - ami-8c8675fb实例类型的AMI cg1.4xlarge。我选择了那个实例类型,所以它带有一个Cirrus Logic GD 5446用于图形执行的。

当然主要安装是无头的,所以我必须从头开始构建这个服务器,我首先做的是。

sudo apt-get install ubuntu-desktop
sudo apt-get install gdm
sudo /etc/init.d/gdm start
sudo dpkg-reconfigure xserver-xorg
sudo apt-get install gnome-core
Run Code Online (Sandbox Code Playgroud)

之后,我安装了一个 LAMP 服务器(通常的)并将内核更新为Linux ip-172-31-29-168 3.8.0-37-generic #53~precise1-Ubuntu SMP Wed Feb 19 21:37:54 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux.

我还在https://launchpad.net/~xorg-edgers/+archive/ppa注册了 xorg edgers PPA 。

重新启动后,我必须将屏幕连接到我的服务器,我选择使用 vnc4server 执行此操作。

所以这是通常的,我的 xstartup 看起来像这样:

#!/bin/sh

# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc
gnome-session --session=gnome-classic &

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#x-terminal-emulator -geometry 1280x1024+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
Run Code Online (Sandbox Code Playgroud)

启动我的 VNC 服务器并连接它后,我检查了我的 glfxinfo,所以DISPLAY=:1 glxinfo(显示:1 是 VNC)

第一个输出是:

name of display: :1
libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
Error: couldn't find RGB GLX visual or fbconfig
Error: couldn't find RGB GLX visual or fbconfig
Run Code Online (Sandbox Code Playgroud)

我通过安装nvidia-current软件包修复了这个问题。我已经知道要运行 WebGL,我至少需要 GLX 1.3 版。所以我又进行了glxinfo一次摆动,结果如下:

ubuntu@ip-172-31-29-168:~$ DISPLAY=:1 glxinfo | grep version
Xlib:  extension "NV-GLX" missing on display ":1".
Xlib:  extension "NV-GLX" missing on display ":1".
server glx version string: 1.2
client glx version string: 1.4
GLX version: 1.2
OpenGL core profile version string: 1.3 Mesa 4.0.4
OpenGL version string: 1.3 Mesa 4.0.4
Run Code Online (Sandbox Code Playgroud)

正如您所看到的 GLX 版本不足以运行 WebGL,我尝试了所有关于此的指南。他们似乎都没有提高 GLX 版本。你可能会问,为什么 WebGL,我在 Mac Mini 服务器上运行它,它完美地创建了一个漂亮的 3D 视频。不想编辑代码,只想在云中得到它。还尝试了 Windows 服务器,但在ffmpeg那里遇到了很多问题,所以这也不是一个选择。现在正在考虑获得 Mac OS 云服务器,但仍然想知道这里出了什么问题。

所以我的问题是:甚至可以在我的 Amazon EC2 服务器上执行此操作吗?如果是这样,如何?

PS当我从命令行运行chromium-browser时,这是我的错误:

ubuntu@ip-172-31-29-168:~/.vnc$ DISPLAY=:1 chromium-browser --enable-webgl
[12243:12243:0307/155523:ERROR:gl_surface_glx.cc(413)] GLX 1.3 or later is required.
[12243:12243:0307/155523:ERROR:gl_surface_x11.cc(58)] GLSurfaceGLX::InitializeOneOff failed.
Run Code Online (Sandbox Code Playgroud)

ant*_*uru 1

在虚拟机内运行 OpenGL 应用程序很可能不会表现良好。首先,您不能使用硬件加速,而必须回退到软件渲染器。这是第一条错误消息告诉您的内容:

libGL error: failed to load driver: swrast
Run Code Online (Sandbox Code Playgroud)

安装 Nvidia 驱动程序没有帮助,因为没有可用的 Nvidia 卡 - 因此出现第二条错误消息。使用软件渲染器是可能的,但速度会很慢。

所以答案是:是的,也许可以做你想做的事,但除非有专用硬件可以与虚拟主机上的 VNC 很好地配合,否则这不会是一个很好的体验。