【发布时间】:2017-08-20 14:35:21
【问题描述】:
我正在创建一个基于 Open GL ES 3.0 的 Android 应用程序,它必须迎合各种设备。
由于我的应用程序的某些要求,我必须在我的应用程序运行时在 RAM 上保留大量图像数据。由于 android 手机对每个应用程序的 CPU 内存使用有限制或heap memory size 限制,我决定在我的应用程序运行时将所需的图像数据作为纹理保留在 GPU 内存上。
我的纹理大小是1024x1024。保存纹理并在需要时再次显示它们对于它的实现部分来说都很好。
但是,很快我发现 GPU 内存也有接近限制(看起来)。我只能在 Sony XPeria Z5 上保存 1024x1024x50 近似数量的纹理。 1024x1024x70 另一个 Sony XPeria 系列的纹理。 Huawei P8 上的1024x1024x90 等等。
另外,我发现iOS 设备上的textures/GPU memory 也存在限制。我无法在 iPhone 6+ 上保存更多 1024x1024x90 纹理!!
这里的数字并不准确,但非常接近。我提出这个问题的目的是了解 Android 设备上的应用程序允许使用多少 GPU 内存。
Android 应用程序是否允许 GPU 内存以某种方式与 CPU 内存相关,正如 link here 所指出的那样?
Android 应用可以通过 Manifest 中声明的属性请求 large heap。同样,我是否可以通过某种方式为我的应用请求更多 GPU 内存?
纹理是否真的存储在 GPU 内存中,或者其中的一部分也存储在 CPU 内存中?
任何与 iOS 设备和 android 设备上的 GPU 内存限制相关的信息都会有所帮助。
【问题讨论】: