2010-06-19 111 views
2

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

回答

1

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

换句话说,通过纯粹的OpenGL,你不能说出你已经使用了多少内存。但是,您可以使用您上传到VRAM的每个纹理(因为您拥有上传的字节)来跟踪此自己。

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

+0

我对桌面设备有类似的理解 - 但与Android的东西似乎不同。我正在使用名为procrank的Android特定工具来跟踪我的进程内存,该工具统计进程独有的页数(USS),如果我不调用glDeleteTextures - 我的USS增加。 – bgm 2010-06-21 11:05:56