在Android中跟踪opengl纹理内存

时间:2010-06-19 21:21:29

标签: android opengl-es android-ndk

如何跟踪Android中OpenGL纹理使用的内存? 我理解纹理内存在视频RAM上,但它们是否与RAM交换?如果我调用glGenTextures并且不调用glDeleteTextures,它如何影响我当前进程的内存使用情况?

1 个答案:

答案 0 :(得分:1)

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

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

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