Opengl第二次显示减速(Ubuntu)

时间:2015-09-30 05:22:40

标签: ubuntu opengl

我有一个使用nvidia-355驱动程序在Ubuntu 14.04上运行的OpenGL(4.3)应用程序。一切运行正常,但是当我连接第二个显示器(或移除第二个显示器)时,主显示器将变黑并返回。当它返回时,应用程序显着减慢(时间显示2-3倍减速)。现在,如果我在保持相同上下文的同时删除并重新创建所有GL资源,则一切都恢复正常。问题是关于为什么在这种情况下发生减速的想法?

我在前后检查了上下文指针,它总是一样的。授予的上下文可能仍然丢失并重新创建,因为我使用的是早期版本的GLEW,我不能使用glGetGraphicsResetStatusARB来检查状态。是否有任何其他方法可以做类似的事情?

更新:我已经找到了原因,成为我拥有的vao / vbo。它是使用点的绘制调用的缓冲区,它包含相当数量的顶点(大约数百万)。如果我保持一切不变,但重新加载那个vbo,性能很好。 2个问题:任何想法为什么会发生这种情况?有没有办法检测在glx / gl / glut中添加/删除显示?感谢

1 个答案:

答案 0 :(得分:0)

与Direct3D不同,OpenGL API合同断言上下文是一件可能发生的事情,上下文永远不会丢失;任何内务管理,比如重新初始化GPU和所有相关对象,都必须在幕后透明地进行。

您遇到的减速有几种可能的原因。我最好的选择是,一些Ubuntu的便利自动机可能会做一些抛出GPU驱动程序内部状态管理的事情,导致低于标准的性能。如果没有这些自动化,新连接的显示器将无法自动激活,但需要用户交互。

另一种可能性是,使用新显示器,您只能获得刷新频率的最小公分母,并且启用了V-Sync,因此会遇到减速。

但是,我只是在这里猜测,如果没有深入了解您的特定系统中的分析器,很难说明发生了什么。