Amazon EC2サーバーでWebGLを動作させようとしています(多くの問題があるオフィス向けMac Miniから移行しています)。
これを実行するために数日働きましたが、私が始めたところから始めようとします。
最初に、インスタンスタイプcg1.4xlarge
で次のAMI Ubuntu Server 12.04 LTS (HVM) - AMI-8c8675fb
をインストールしました。このインスタンスタイプを選択したので、グラフィカルな実行のために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
その後、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
に更新しました。
また、xorg edgers PPAを https://launchpad.net/~xorg-edgers/+archive/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 &
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
nvidia-current
パッケージをインストールして、これを修正しました。 WebGLを実行するには既に知っていましたが、少なくともGLXバージョン1.3が必要でした。そこで、glxinfo
をもう1回振ると、次の出力が得られました。
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
あなたが見ることができるように、GLXバージョンはWebGLを実行するのに十分ではないので、私はこれに関するすべてのガイドを試しました。それらのどれもGLXバージョンを上げるようではありません。おそらく、WebGLがMac Miniサーバーで実行されていた理由を尋ねているでしょう。これは、Nice 3Dビデオを作成するのに完璧に機能しました。コードを編集するのではなく、クラウドでコードを取得するだけです。また、Windowsサーバーを試しましたが、ffmpeg
で多くの問題が発生したため、これもオプションではありません。 Mac OSクラウドサーバーを入手することを考えていますが、ここで何が問題になっているのでしょうか。
私の質問:Amazon EC2サーバーでこれを行うことさえ可能ですか?もしそうなら、どのように?
追伸コマンドラインからchrome-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.
仮想マシン内でOpenGLアプリケーションを実行すると、パフォーマンスが低下する可能性が非常に高くなります。まず、ハードウェアアクセラレーションを使用することはできませんが、ソフトウェアレンダラーにフォールバックする必要があります。これは、最初のエラーメッセージが示す内容です。
libGL error: failed to load driver: swrast
Nvidiaドライバーをインストールしても、利用可能なNvidiaカードがないため、役に立ちません-2番目のエラーメッセージ。ソフトウェアレンダラーの使用は可能ですが、非常に遅くなります。
答えは次のとおりです。はい、あなたがやりたいことができるかもしれませんが、仮想ホスト上でVNCとうまく機能する専用ハードウェアがない限り、これは素晴らしい体験ではありません。