如何跟踪 Android 中 OpenGL 纹理使用的内存? 我知道纹理内存在视频 RAM 上,但它们会与 RAM 交换吗?如果我调用 glGenTextures 但不调用 glDeleteTextures,它会如何影响我当前进程的内存使用?
最佳答案
这可能取决于设备。但在 OpenGL 的某些实现中,当 VRAM 耗尽时,如果有空间,它会尝试将一些较旧的纹理转移到系统内存中。如果没有空间,它将被释放。但是,OpenGL 内存永远不会进入您的应用程序内存,因为设备上通常一次只有一个 OpenGL 上下文。这意味着它由系统处理,而不是您的应用程序问题。
所以换句话说,通过纯OpenGL,你无法知道你使用了多少内存。但是,您可以自己跟踪上传到 VRAM 的每个纹理(因为您有上传的字节)。
至于不调用 glDeleteTextures,如果你不使用那么多内存,你真的不需要。它不使用更多的电池或 CPU 或 GPU 功率,VRAM 的位只是简单地设置为 1 而不是 0。如果其他应用程序在您的应用程序暂停或死机后需要该内存,它们将自动删除您的纹理并覆盖它们与他们的。
关于android - 在 Android 中跟踪 opengl 纹理内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3077283/