Android opengles内存管理

Android opengles内存管理,android,opengl-es,opengl-es-2.0,Android,Opengl Es,Opengl Es 2.0,我正在使用OpenGL ES 2.0开发一个Android应用程序。我对OpenGL中的内存管理感到困惑 我的问题是: OpenGL硬件有多少可用内存?很明显,它会因设备而异 我怎样才能知道有多少内存在使用,以及如何使用 还剩多少 如果超出内存限制,会发生什么情况 我应该使用什么技术卸载当前未显示的数据 我想我必须实现某种系统来卸载当前未在LRU基础上使用的纹理,但我想知道使用什么标准。 该应用程序在某个时候会悄然消亡,我怀疑这是因为我使用了太多的图形内存 目前,我从未卸载过纹理,而且我似乎

我正在使用OpenGL ES 2.0开发一个Android应用程序。我对OpenGL中的内存管理感到困惑

我的问题是:

  • OpenGL硬件有多少可用内存?很明显,它会因设备而异
  • 我怎样才能知道有多少内存在使用,以及如何使用 还剩多少
  • 如果超出内存限制,会发生什么情况
  • 我应该使用什么技术卸载当前未显示的数据
我想我必须实现某种系统来卸载当前未在LRU基础上使用的纹理,但我想知道使用什么标准。 该应用程序在某个时候会悄然消亡,我怀疑这是因为我使用了太多的图形内存

目前,我从未卸载过纹理,而且我似乎能够加载相当多的纹理-在Nexus 7上测试时,我已经能够加载134 1024个RGBA纹理,据我计算,这些纹理超过500MB。我假设一旦纹理被加载到图形内存中,它们占用的空间就更少了,但这仍然很大,显然我必须管理它,但我想知道一些如何开始的提示。

简单使用

如果内存不足,则可能会出现内存不足错误。另一件事是监视Android中的内存使用情况

android内存:


请参见opengl的一个有趣问题:

在我当前用于测试的设备上,如果我填满内存,则不会出现错误-应用程序只是静静地死掉。日志中唯一的线索是关于窗户死亡的信息。加载每个位图后,我将调用glGetError。是否正确使用glGetError?你应该在一个循环中检查它。也许这不是德国劳埃德船级社的问题。。。也许Android无法加载纹理?