Drake 错误:客户端的最大数量达到了错误的 X 服务器连接 vtkXOpenGLRenderWindow



我正在项目中的for循环中生成新的多体植物。如果我多次运行它,我的程序会崩溃并显示错误:

Maximum number of clients reached bad X server connection vtkXOpenGLRenderWindow

我认为错误就在这里:

scene_graph.AddRenderer(renderer_name, MakeRenderEngineVtk(RenderEngineVtkParams()))

我不确定在使用多体实例后如何干净地删除渲染器。有什么想法吗?

谢谢

萨维什

简短回答:您无法从SceneGraph中删除渲染器。可能是应该解决的缺陷。

更长的答案:

  1. 不仅仅是注册了渲染器的SceneGraph副本,您还可以在分配的每个Context中获得一个副本。因此,场景图的数量 + 上下文的数量就是您正在燃烧的 OpenGl 上下文数量。
  2. 现在让我们探索一下你正在做什么,看看是否有更好的方法来实现同样的目标。
    • 如果要使用MultibodyPlantSceneGraph创建大量Diagram,是否需要为每个渲染器添加渲染器?您的短期解决方案是仅在要使用渲染器时才添加渲染器。
    • 更元的问题是你为什么要用MultibodyPlantSceneGraph创建大量Diagrams?主要理由是MultibodyPlant中的模型在图表之间略有不同(因为MultibodyPlant对您来说没有足够的可变性)。
    • 如果事实证明确实有充分的理由创建带有渲染器的所有Diagram,那么您需要同时保持多少个活动状态。销毁ContextDiagram应该会减少对有限资源的使用。

相关内容

最新更新