问题描述
Invalid parentWindowHandle (wrong server or screen) in GLXWindow:
在使用ros的时候遇到rviz打不开的一种情况,网上有些帖子说是显卡驱动有问题,但是运行nvidia-smi
看起来并没有什么问题(应该吧)。
我在github上找到了一直临时的解决方案,虽然不知道什么原理,但是管用。
rviz报错如下:
[ WARN] [1716523309.554136847]: OGRE EXCEPTION(3:RenderingAPIException): Invalid parentWindowHandle (wrong server or screen) in GLXWindow::create at /build/ogre-1.9-kiU5_5/ogre-1.9-1.9.0+dfsg1/RenderSystems/GL/src/GLX/OgreGLXWindow.cpp (line 240)
rviz::RenderSystem: error creating render window: OGRE EXCEPTION(3:RenderingAPIException): Invalid parentWindowHandle (wrong server or screen) in GLXWindow::create at /build/ogre-1.9-kiU5_5/ogre-1.9-1.9.0+dfsg1/RenderSystems/GL/src/GLX/OgreGLXWindow.cpp (line 240)
[ERROR] [1716523309.554184739]: Unable to create the rendering window after 100 tries.
段错误 (核心已转储)
原因分析:
罪魁祸首是 OGRE,它还不支持 Wayland:
https://forums.ogre3d.org/viewtopic.php?t=93084#p537787
解决方案:
通过使用 QT_QPA_PLATFORM=xcb在 Wayland 上强制使用 X11:
sudo gedit ~/.bashrc
找到 export QT_QPA_PLATFORM='offscreen'
改成 export QT_QPA_PLATFORM=xcb
source ~/.bashrc
之后就可以用了