一般情况下服务器端是没有XServer的,也不会给每个服务器配置显示器。
XServer是插上显示器开机才能开启,在调用VTK的时候,会渲染出一个界面,然后保存成图片。
下面的方法试验了用EGL解决在没有XServer的情况下的GPU渲染。
osmesa编译:
1.从源码下载:
2.解压后执行configure:
./configure --prefix=/home/fangyunfeng/vtk_rendering/mesa-18.0-0-rc1/release --enable-opengl --disable-gles1 --disable-gles2 --disable-va --disable-xvmc --disable-vdpau --enable-shared-glapi --disable-texture-float --enable-gallium-llvm --enable-llvm-shared-libs --with-gallium-drivers=swrast,swr --disable-dri --with-dri-drivers= --disable-egl --with-egl-platforms= --disable-gbm --disable-glx --disable-osmesa --enable-gallium-osmesa ac_cv_path_LLVM_CONFIG=llvm-config-4.0
3.make -j8
4.make install
报错的解决方案:
sudo apt-get install libegl1-mesa-dev
brew install linuxbrew/xorg/xorg linuxbrew/xorg/mesa vtk
VTK编译:
1.mkdir build
2.cd build
3.ccmake ..
配置
VTK_RENDERING_BACKEND=OpenGL2, VTK_USE_X=OFF, VTK_OPENGL_HAS_OSMESA=OFF, VTK_DEFAULT_RENDER_WINDOW_OFFS=ON, VTK_OPENGL_HAS_EGL=ON,
CMAKE_INSTALL_PREFIX=/home/install/VTK-8.2.0/release
4.cmake .
5.make -j8
6.make install
报错:
make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/libGL.so', needed by 'lib/libvtkglew-7.1.so.1'. Stop.
CMakeFiles/Makefile2:2675: recipe for target 'ThirdParty/glew/vtkglew/CMakeFiles/vtkglew.dir/all' failed
make[1]: *** [ThirdParty/glew/vtkglew/CMakeFiles/vtkglew.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
解决:
root@mec12:~# ls -lh /usr/lib/x86_64-linux-gnu/libGL.so
lrwxrwxrwx 1 root root 13 Jun 15 2018 /usr/lib/x86_64-linux-gnu/libGL.so -> mesa/libGL.so
root@mec12:/usr/lib/x86_64-linux-gnu# cd /usr/lib/x86_64-linux-gnu/
root@mec12:/usr/lib/x86_64-linux-gnu# rm libGL.so
root@mec12:/usr/lib/x86_64-linux-gnu# ln -s libGL.so.1 libGL.so
设置环境变量:
export VTK_DIR=/data1/yunfeng/vtk_rendering/VTK-7.1.1-library
export LD_LIBRARY_PATH=$vtkdir/lib/
rm -rf Makefile cmake_install.cmake CMakeCache.txt CMakeFiles volumerendering
cmake .
make
查看环境变量:
echo $LD_LIBRARY_PATH