OpenGL性能随时间退化的可能原因

时间:2017-03-15 05:46:33

标签: c++ opengl

所以我今天正在研究我的OpenGL引擎,我注意到如果我让它运行了大约一分半钟,我就会开始体验一些重要的帧速率下降。我做的第一件事就是确保每帧都没有OpenGL分配。在代码检查和单独的配置文件应用程序检查后,我验证我没有调用像glGenBuffers()之类的东西。然后我检查了每帧动态分配的可能问题。每帧执行的代码相对较大,但似乎在渲染管道中没有任何动态分配。我检查了内存使用情况的图表,它甚至看起来我没有分配任何内存,除了一点点在这里和那里,我假设它来自PhysX或OpenAL,它们都在程序中。

我认为也许我的CPU或GPU可能会受到热量限制(我在笔记本电脑上)。我运行程序直到遇到性能问题,关闭它并立即再次运行。重新运行应用程序后性能问题停止。同样令我感到奇怪的是,当我退出并退回时,性能问题会在短时间内停止。

我对这里发生的事情感到有点困惑。我非常怀疑这是一个驱动程序问题,因为其他游戏工作正常,虽然我没有在另一台计算机上尝试过。我已经运行了一些标准的时间流逝的CPU分析来试图找出代码变慢的地方(我知道这些通常是不可靠的,因为GPU独立运行)并且它似乎只是在OpenGL触及的任何地方之后运行得更慢游戏还在运行。

1 个答案:

答案 0 :(得分:1)

我建议在您的应用程序上运行OpenGL调试器。如果你有一张NVidia卡,你可以使用NSight进行visual studio或eclipse,以显示GPU花费的时间。否则,apitrace过去为我解决了许多问题。

您的问题可能与越来越多的平局调用相关吗?