【发布时间】:2015-11-26 00:16:29
【问题描述】:
我正在为我的简单 2D 游戏编写游戏内编辑器,其中经常动态创建和删除网格。我正在使用 libgdx
一切正常,只是编辑器变慢了。它对输入事件的响应很晚。
为了找到我的代码中的弱点(根本没有优化),我运行了 jprofiler 并分析了 CPU。事实证明,glGenBuffers 14 次调用耗时超过 2 秒!那是 7 个网格,每个网格有一个顶点和索引缓冲区。实际上,我有一台速度很快的机器(i7-4790T、GTX980m、16GB...),所以这应该不是问题。
我只是想知道这怎么可能,因为我不知道。
【问题讨论】:
-
您是否正在删除不再使用的缓冲区?仅根据症状,它可能是内存泄漏。您能否查看您的应用的总体内存使用情况,看看它是否在增加?
-
只是想说明缓冲区可能会保存在您的显卡内存中,因此您可能无法看到您的 RAM 使用率上升。否则,您应该始终通过调用
glDeleteBuffers来清理缓冲区。