从 vm 清除 libgdx 中的 Android 纹理
我正在 android 中使用 libgdx 开发游戏。我在游戏结束时处理了我使用的所有纹理(赢-输-重新启动),但我的虚拟机未清除。我尝试
gl.glDeleteTextures(1, textureHandle, 0);
处理所有纹理、世界、对象等。但虚拟机大小是相同的。由于这个问题,我在玩了几个关卡后得到了OutOfMemoryException。
I'm developing a game using libgdx in android. I dispose all the textures I use when the game ends (win-lose-restart) but my vm is not cleared. I tried
gl.glDeleteTextures(1, textureHandle, 0);
I dispose all textures, world, objects, etc. But vm size is the same. Due to this problem I get OutOfMemoryException after playing a few levels.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您使用什么 libgdx API 来加载纹理?默认情况下,libgdx 将管理纹理内存,以便在您的应用程序挂起时将纹理重新加载到视频 RAM 中。
请参阅有关上下文丢失的 badlogic 博客文章:http://www.badlogicgames.com/wordpress/ ?p=1073
这意味着你需要告诉libgdx释放纹理,而不是直接告诉OpenGL释放纹理。请参阅 Texture.dispose()< /a>.
What libgdx APIs are you using to load textures? By default libgdx will manage texture memory so that it can, for example, reload textures into video RAM if your app gets suspended.
See the badlogic blog post about context loss here: http://www.badlogicgames.com/wordpress/?p=1073
What this means is that you need to tell libgdx to release the Texture, not just directly tell OpenGL to release the texture. See Texture.dispose().