2016-07-01 11 views
2

私はAWS EC2 Ubuntu 14.04を使用してOpenGL + SDL2アプリケーションをテストしています。私はSDLバージョン2.0.2を使用しています。 AWS EC2はヘッドレスですので、私はXVFBを使用していますし、/etc/init.d/xvfbにこのスクリプトを使用した:iアプリを実行する前にAWS EC2でOpenGL + SDL2を実行

XVFB=/usr/bin/Xvfb 
XVFBARGS=":99 -ac -screen 0 1024x768x24" 
PIDFILE=/tmp/cucumber_xvfb_99.pid 
case "$1" in 
    start) 
    echo -n "Starting virtual X frame buffer: Xvfb" 
    /sbin/start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile --background --exec $XVFB -- $XVFBARGS 
    echo "." 
    ;; 
    stop) 
    echo -n "Stopping virtual X frame buffer: Xvfb" 
    /sbin/start-stop-daemon --stop --quiet --pidfile $PIDFILE 
    rm -f $PIDFILE 
    echo "." 
    ;; 
    restart) 
    $0 stop 
    $0 start 
    ;; 
    *) 
    echo "Usage: /etc/init.d/xvfb {start|stop|restart}" 
    exit 1 
esac 
exit 0 

これらは、Linuxのコマンドです:

export DISPLAY=:99.0 
sh -e /etc/init.d/xvfb start 
sleep 3 

しかし、私はhttps://docs.travis-ci.com/user/gui-and-headless-browsers/からの指示に従ってください、私のAWSのマシンで同じことをやりたいので、私は実際にこれをやっている

|(SDL_INIT_TIMER SDL_INIT_VIDEO)私はSDL_Initを呼び出しからエラー「がミールサーバーへの接続に失敗しました」です。私はtravisでも試してみました。また、xvfbスクリプトはtravis ci setupからも取りました。

これが役立つかどうかわかりませんが、これらはglxinfoの出力です。 grepのOpenGLの:

OpenGL vendor string: VMware, Inc. 
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.4, 256 bits) 
OpenGL version string: 2.1 Mesa 10.1.3 
OpenGL shading language version string: 1.30 
OpenGL extensions: 

だから、私は基本的に私の質問は推測:ヘッドレスのUbuntu 14.04でのセットアップ(好ましくはバージョン3)のOpenGL + SDL2にどのように?

ありがとうございます。

答えて

0

だから、それは私が〜/ .bashrcのにこれを配置する必要があり判明:上記のスクリプトは、私はマシンに接続するたびに実行されるように

export DISPLAY=:99.0 
sh -e /etc/init.d/xvfb stop 
sh -e /etc/init.d/xvfb start 
sleep 3 

しかし、私は、SDL_GL_CreateContextが失敗したという異なるエラーが発生しました。 @ dietrich-appのように、私は自分のメサを更新する必要があります。それはもはやubuntu 14.04をサポートしていないので、oibafのグラフィックドライバppaはもはや動作していません(すべてのGoogle検索はそれを使用するように思われます)。私は自分自身でメサをコンパイルしようとしましたが、依存関係をコンパイルするのは非常に時間がかかり面倒です。最後に、検索の時間後、私はこのhttps://wiki.ubuntu.com/Kernel/LTSEnablementStackを発見し、そのリンクから次のコマンドをコピー&ペースト:

sudo apt-get install --install-recommends linux-generic-lts-wily xserver-xorg-core-lts-wily xserver-xorg-lts-wily xserver-xorg-video-all-lts-wily xserver-xorg-input-all-lts-wily libwayland-egl1-mesa-lts-wily 

そして私は私のメサが更新されました、そして今ヘッドレスAWS EC2上でのOpenGL + SDL2を実行することができます

すべてのhelpoをありがとう

1

2つのオプションがあります。

  1. 実際のX11サーバーを使用してください。ヘッドレスOpenGLは、ほとんどのOpenGL実装ではサポートされていません。これにより、ハードウェアアクセラレーションを使用できます。適切なハードウェアをサポートするEC2インスタンスを選択する必要があります。

  2. OSMesaを使用してください。これにより、X11やその他のウィンドウサーバーを必要としないソフトウェアのみの実装が可能になります。

ハードウェアアクセラレーションが利用できない場合、実装としてGallium + llvmpipeを取得するのは正常/予想されます。これは問題ありません。 OpenGLの新しいバージョンが必要な場合は、新しいバージョンのMesaをインストールすることをお勧めします。この時点でメサ10.1.3は2歳以上です(2014年5月以降)。新しいバージョンのMesaを入手するには、代替のrepoを使う方法、別のバージョンのUbuntuをインストールする方法、またはMesaを自分でコンパイルする方法のいずれかが必要です。

自分でMesaをコンパイルする場合は、OSMesa(「オフスクリーンメサ」)用に設定することができます。つまり、X11に依存しません。詳細はOff-screen Renderingを参照してください。

+0

私はOSMesaについてのURLを読んでいます。 SDL_GL_CreateContextを使用する代わりに、OSMesaCreateContext()、OSMesaMakeCurrent()、およびOSMesaDestroyContext()を使用する必要があることを意味しますか? – bysreg

+0

はい、SDLをまったく使用しません。 –

関連する問題