我有一个质感很重的OpenGL游戏,我想根据设备有多少RAM调整.最高分辨率纹理我可以在iPhone 4或iPad2上正常工作,但较早的设备在加载纹理时会崩溃.我有这些纹理的低分辨率版本,但我需要知道什么时候使用它们.

我目前的策略是检测特定的旧设备(3GS具有低分辨率屏幕; iPad没有摄像头),然后仅加载IPad2及以上版本以及iPhone 4及更高版本的高分辨率纹理 – 我想我需要为iPod touch做点事情但是,我非常喜欢使用功能检测,而不是硬编码设备型号,因为型号检测对于未来对API和硬件的更改是脆弱的.

我正在考虑的另一种可能性是首先加载高分辨率纹理,然后在我获得低内存警告的那一刻放弃并替换它们.不过,我不知道我会有机会回应;我已经注意到,在调试控制台上出现任何通知之前,应用程序通常会死机.

如何检测我正在运行的设备是否没有足够的RAM来加载我的纹理的高分辨率版本?

退后一步,还有其他一些适用于OpenGL纹理内存的自适应技术吗?

笔记:

>我已经搜索了SO和有关可用RAM检测的答案,但它们基本上都建议使用内存使用情况,并消除浪费(最小化临时的生命周期以及所有这些).我已经尽可能多地完成了,我没有办法将高分辨率纹理压缩到旧设备中.
> PVRTC不是一个选项.纹理包含要由片段着色器使用的数据,并且必须以无损格式存储.

解决方法

要获取设备的总(最大)物理RAM,请使用[nsprocessInfo processInfo] .physicalMemory.

见Documentation.

响应iOS中的RAM可用性的更多相关文章

  1. 响应iOS中的RAM可用性

    退后一步,还有其他一些适用于OpenGL纹理内存的自适应技术吗?

  2. 如何从命令行更改android模拟器RAM大小?

    我想在命令行创建android模拟器时编辑或更改ram大小.EX:在创建模拟器时,它采用默认的ram大小(AndroidSDK4.0.3)512MB但我想将其增加到768MB或减少到256MB.我想改变只有拉姆尺寸.因为有一个选项可以改变Ram的大小.如果你输入了yes,我们需要提供很多东西.解决方法您需要找到已创建的AVD的配置文件.在我的情况下,我在Ubuntu上运行AVD,所以这是我找到配置

  3. Android应用程序在首次启动时开始非常慢,但通常在下次启动时启动

    我使用Eclipse创建了一个非常繁重的应用程序并在4.2.2设备上部署.在第一次启动时,需要相当长的时间才能完全显示UI.在那之后,即使在app杀死并重新启动之后,一切都会很快,需要0.5秒才能启动.这是正常现象,如果是,那么根本原因是什么?

  4. windows – 在Haskell程序中使用所有可用的RAM?

    我有8GB的RAM,但Haskell程序似乎只能使用1.3GB.我正在使用这个简单的程序来确定GHC程序可以分配多少内存:这是我发现的:>运行./mem.exe40000000RTS-s成功并报告正在使用的总内存为1113MB>运行./mem.exe42000000RTS-s因内存不足错误而失败>运行./mem.exe42000000RTS-s-M4G错误输出-M4G:大小超出允许范围>运行./m

  5. 在Windows桌面上调整postgreSQL以利用24GB RAM

    我的pgtune值看起来好吗?我做了一些研究,告诉我:>在Windows上,shared_buffers不应大于512MB,而应使用该系统缓存.问题:我是否必须以某种方式告诉Windows将系统缓存分配给postgresql,否则如果postgresql请求它会自动发生?>work_mem允许数据库服务器在RAM足够大的情况下对RAM进行排序.问题:我的work_mem足够大吗?如何判断是在RAM还是磁盘上进行排序?我将非常感谢任何有助于加快此查询的见解.谢谢!

  6. 可编程RAM磁盘API for .NET?

    寻找一个RAM磁盘API(或等效的软件实现)来临时存储文件,用于物理硬盘环境之外的读/写操作.更新Exe文件将被写入RAM磁盘并执行.“RAM磁盘”是操作系统级的结构,因为它必须实现一个文件系统和设备驱动程序来模拟一个磁盘.您不能在图书馆级别执行此操作.如果你想追求操作系统级别,Windows自带一个内置的ramdisk.sys驱动程序.否则,将文件读入应用程序中的数据结构将具有与使用RAM磁盘相

  7. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  8. centos – 为VM分配4GB RAM,但Linux仅显示总内存约3GB

    我已经为运行32位LinuxCentos5.5的VM分配了4GB的RAM.由于未知原因,总内存仅为3GB左右.内存:3107536k总计,366308k使用,2741228k免费,54900k缓冲区丢失的1GB在哪里消失了?任何帮助是极大的赞赏!默认情况下,32位内核只能解决第一个3G左右的问题.您需要获得具有PAE支持的内核.yuminstallkernel-PAE和VM的重启会让你看到所有的4G.

  9. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

  10. centos – mdadm Raid-1是否可以通过网络文件共享?

    我使用的是64位CentOS5.5我知道可以使用物理硬盘和RAM磁盘使用mdadm设置软件RAID1.是否可以使用NFS挂载和RAM磁盘设置mdadm软件RAID1?或者另一种提出问题的方法是,NFS挂载是否可以成为与mdadm一起使用的块设备?

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部