2

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

我的问题是:

  • Open GL 硬件有多少内存可用?显然,它会因设备而异。
  • 我怎样才能知道有多少内存正在使用以及还剩下多少?
  • 如果我超出内存限制会怎样?
  • 我应该使用什么技术来卸载当前未显示的数据?

我想我将不得不实现某种系统来卸载当前未在 LRU 基础上使用的纹理,但我想知道为此使用什么标准。该应用程序在某些时候默默地死掉了,我怀疑这是因为我使用了太多的图形内存。

目前我从不卸载纹理,而且我似乎能够加载很多 - 在 Nexus 7 上进行测试,我已经能够加载 134 个 1024x1024 RGBA 纹理,我计算它超过 500MB。我认为一旦纹理被加载到图形内存中,它们占用的空间就会减少,但这仍然很多,显然我必须管理它,但我想要一些关于如何开始的提示。

4

1 回答 1

0

只需使用gles glDeleteTextures

如果内存不足,您可能会产生 GL_OUT_OF_MEMORY 错误。另一件事是监控 Android 中的内存使用情况。

android memory:如何在 Android 中发现我的应用程序的内存使用情况?

在这里看到一个关于 opengl 的有趣问题:如何在 opengl 中使用纹理管理内存?

于 2013-08-23T13:12:45.340 回答