2015-11-26 54 views
-3

我正在为简单的2D游戏编写一款游戏内编辑器,其中网格动态创建和移除的频率很高。我正在使用libgdx经过一段时间,glGenBuffers非常缓慢

一切正常,除了编辑器变慢。它对输入事件的反应很晚。

为了找到我的代码中的弱点(在所有的atm都没有优化),我运行了jprofiler并对CPU进行了剖析。事实证明,这个glGenBuffers花了2秒为14个调用!这是7个网格,每个都有一个顶点和索引缓冲区。其实,我有一个相当快的机器(i7-4790T,GTX980m,16GB ...),所以这不应该成为这里的问题。

我只是想知道这是如何可能,因为我不知道。

jprofiler

+3

您是否删除了不再使用的缓冲区?只是基于症状,可能是内存泄漏。你可以看看你的应用程序的整体内存使用情况,看看它是否在增加? –

+3

只是想说缓冲区可能会保存在显卡的内存中,所以你可能无法看到你的内存使用量增加。否则,您应该通过调用'glDeleteBuffers'来清理缓冲区。 – vesan

回答

0

1两点意见是正确的。我重建了大部分场景来检查,如果它仍然存在(通常不是那么聪明)。如果它仍然存在,重建的部分不会被处置。只更换部件被正确更换。 :/。

我发现这个问题的JProfiler使用和分析存储,如注释1

我没有检查显存建议,但没有别的办法,即垃圾也在那里。

0

缓冲区总是存储在内存中。总是需要清理,帧缓冲区,字节缓冲区等。