linux - 为什么通过 `bazel test` 执行的 drake 中基于 OpenGL 的 VTK 目标有时会在 Linux 上失败?

标签 linux opengl vtk drake

虽然二进制文件与 bazel run 一起工作,但当我使用 bazel test 运行测试时,例如:

$ bazel test //systems/sensors:rgbd_camera_test

我遇到了很多来自 VTK/OpenGL 的错误:

ERROR: In /vtk/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx, line 820
vtkXOpenGLRenderWindow (0x55880715b760): failed to create offscreen window

ERROR: In /vtk/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx, line 816
vtkXOpenGLRenderWindow (0x55880715b760): GLEW could not be initialized.

ERROR: In /vtk/Rendering/OpenGL2/vtkShaderProgram.cxx, line 453
vtkShaderProgram (0x5588071d5aa0): Shader object was not initialized, cannot attach it.

ERROR: In /vtk/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx, line 1858
vtkXOpenGLRenderWindow (0x55880715b760): Hardware does not support the number of textures defined.

请问为什么会这样?

(注意:这篇文章是一种从 http://drake.mit.edu/faq.html 迁移到 StackOverflow 以解决基于用户的问题的方法。)

最佳答案

目前最好的解决方法是首先在 BUILD.bazel 文件中将测试标记为 local,或者使用 local = 1,或 tags = [.., "local"]。这样做将使特定目标在没有沙盒的情况下运行,使其具有类似于 bazel run 的环境。

例如,在 systems/sensors/BUILD.bazel 中:

drake_cc_googletest(
    name = "rgbd_camera_test",
    # ...
    local = 1,
    # ...
)

如果这不起作用,请尝试在没有沙盒的情况下在 Bazel 中运行测试:

$ bazel test --spawn_strategy=standalone //systems/sensors:rgbd_camera_test

请注意,您可以将 --spawn_strategy=standalone 添加到您的 ~/.bazelrc,但请注意,这意味着您的开发测试环境可能会偏离得更多来自其他开发人员的测试环境。

关于linux - 为什么通过 `bazel test` 执行的 drake 中基于 OpenGL 的 VTK 目标有时会在 Linux 上失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49355055/

相关文章:

linux - 每隔 x(毫秒)暂停一个 shell 脚本以减少立即的 CPU 使用率

linux - centos7我设置了这个脚本开机,重启后服务没有启动起来

java - 需要帮助找出纹理无法加载的原因

vtk - 如何在 vtk 中使用 IntersectWithLine 函数?

linux - 在 Linux 上构建 VTK 时出现错误 "GLintptr has not been declared"

ruby-on-rails - Metasploit 更新 : Error In Bundle Install ( nokogiri 1. 6.8 )

linux - 使用多个 CPU 内核优化目录中的图像

c++ - OpenGL 模板测试未按预期工作

opengl - 顶点数组对象和顶点缓冲区对象的使用

python - 从源代码编译的 Python 版 Ubuntu VTK