在~/.bashrc文件中添加两个环境变量
export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"
export LIBGL_ALWAYS_INDIRECT=0
第一行是让wsl将openGL命令(图形绘制命令)输出到哪里,也就是x-server的位置,这里指的就是我们本地的windows主机在wsl中的ip地址。
第二行禁止永远使用间接渲染,如果某些程序想要使用直接渲染那就让他使用直接渲染(关键,open3d只能直接调用gpu进行渲染,所有的错误都是由此产生)。
设置本地x-server
这里一定要禁止native openGL,这里的意思应该是x.org会将一部分glx的某些命令变为使用wgl实现,open3d只能直接调用gpu进行渲染,所以这里一定要禁止!否则会报错
开启x-server,图像正常显示了!
可能的报错
解决方式都是禁止open3d调用wgl,因为open3d没有办法调用wgl的接口
[Open3D WARNING] GLFW Error: GLX: Failed to create context: GLXBadFBConfig
[Open3D WARNING] Failed to create window
[Open3D WARNING] [DrawGeometries] Failed creating OpenGL window.