android - 在 Android 中跟踪 opengl 纹理内存

标签 android opengl-es android-ndk

如何跟踪 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/

相关文章:

java - 了解 Android 中 Camera2Basic 中 camera2 API 中的按钮单击

c++ - 使用 OpenGL ES(EGL) 与 eglCreatePbufferSurface 和 eglCreatePixmapSurface 的区别

Android native 库 - 写入日志的序列化方式

android - 在 ubuntu 中使用 NDK 为 android 构建 ffmpeg 时出错

java - notifyDataSetChanged();未找到源异常

java - 为 RecyclerView 项目创建选项菜单

android - 如何在Gradle中排除.jar依赖项

ios - 颜色在 OpenGL ES 中不能正确混合

android - 低级流媒体 : A new API based on Khronos OpenMAX AL 1. 0.1

android - Selenium 可以在 Android 设备上直接运行(无需 adb)吗?