我正在使用AWS EC2 Ubuntu 14.04测试我的OpenGL + SDL2应用程序。我正在使用SDL版本2.0.2。由于AWS EC2是无头的,因此我正在使用xvfb并在/etc/init.d/xvfb中使用此脚本:
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
但是从调用SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER)时出现“无法连接到Mir服务器的错误”错误
我之所以这样做,是因为我遵循https://docs.travis-ci.com/user/gui-and-headless-browsers/的指令,并希望在我的AWS机器中执行相同的操作。我也在travis上尝试过,而且xvfb脚本也来自travis ci设置。
不知道这是否会帮助,但这些是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中设置OpenGL(最好是版本3)+ SDL2?
提前致谢
最佳答案
您有两个选择。
当硬件加速不可用时,通常/期望将Gallium + llvmpipe作为实现。这可以。如果需要较新版本的OpenGL,则需要安装较新版本的Mesa。目前,Mesa 10.1.3已使用两年多了(从2014年5月开始)。获得较新版本的Mesa要么意味着使用备用存储库,要么安装其他版本的Ubuntu,要么自己编译Mesa。
如果您自己编译Mesa,则可以为OSMesa(“屏幕外Mesa”)配置它,这意味着它将不依赖X11。有关更多详细信息,请参见Off-screen Rendering。