2

如何在 Android 中跟踪 OpenGL 纹理使用的内存?我知道纹理内存在视频 RAM 上,但它们会与 RAM 交换吗?如果我调用 glGenTextures 而没有调用 glDeleteTextures,它对我当前进程的内存使用有何影响?

4

1 回答 1

1

这可能取决于设备。但是在 OpenGL 的某些实现中,当 VRAM 用完时,如果有空间,它会尝试将一些较旧的纹理转移到系统内存中。如果没有空间,它将被释放。但是,OpenGL 内存永远不会进入您的应用程序内存,因为通常设备上一次只有一个 OpenGL 上下文。这意味着它由系统处理,而不是您的应用程序问题。

所以换句话说,通过纯粹的OpenGL,你无法知道你使用了多少内存。但是,您可以通过上传到 VRAM 的每个纹理来跟踪您自己(因为您有上传的字节)。

至于不调用glDeleteTextures,如果你不使用那么多内存,你真的不需要。它不会使用更多的电池或 CPU 或 GPU 电源,VRAM 的位只是简单地设置为 1 而不是 0。如果其他应用程序在您的应用程序暂停或死机后需要该内存,它们将自动删除您的纹理并覆盖它们和他们的。

于 2010-06-20T16:23:11.580 回答