2011-01-25 71 views

回答

1

正如您迄今为止所看到的,获取GL纹理内存使用的硬编码非常困难。 CoreAnimation也会使用GL Texture内存而不是“咨询”你,包括你自己以外的其他进程,这很复杂。

实际上,我建议您使用Instruments中的VM Tracker工具观察IOKit标签下流程映射的VM页面的更改。这有点粗糙,但这是我找到的最好的方法。根据我的经验,这个过程很大程度上是猜测和检查。

你特别要求一种方法来确定自由VRAM的数量,但即使你能得到这些信息,它也不会有帮助。即使您的应用程序完全是OpenGL,并且不使用UIViews或CoreAnimation图层,但最重要的是那些比您的更有特权的应用程序可以随时通过CoreAnimation显式或隐式地使用该内存。假设如果你的应用程序阻止那些特权更高的应用程序获取他们所需的纹理内存,也可能安全,你的进程将被终止。换句话说,即使你可以确定GL纹理内存的瞬时状态,你也可能不会指望它是该资源的唯一消费者,所以它很没用。

在一天结束时,您应该花费精力设计您的应用程序,使其成为GL内存方面的优秀公民,并管理(读取:最小化)您自己的纹理内存消耗。 iOS设备不是老派的游戏控制台 - 你并不是唯一正在运行的 - 所以你需要谨慎和容忍这个事实,以免你的应用程序成为每隔几分钟就要重启手机的应用程序之一为了使用它。