我有一個質地很重的OpenGL遊戲,我想根據設備有多少RAM來調整。我在iPhone 4或iPad2上的最高分辨率紋理工作正常,但較早的設備在加載紋理時崩潰。我有這些紋理的低分辨率版本,但我需要知道何時使用它們。我目前的策略是檢測特定的舊設備(3GS有一個低分辨率的屏幕,iPad沒有相機),然後只加載高分辨率的紋理IPad2及以上和iPhone 4及以上 - 我想我需要爲iPod touch做點事情。但我更願意使用特徵檢測而不是硬編碼設備模型,因爲模型檢測對於未來對API和硬件的更改是脆弱的。響應iOS中的RAM可用性
我正在考慮的另一種可能性是首先加載高分辨率紋理,然後在出現低內存警告的時刻將其替換爲低分辨率紋理。但是,我不確定我會有機會迴應;我注意到,在調試控制檯上出現任何通知之前,應用程序經常死亡。
如何檢測我運行的設備是否沒有足夠的RAM來加載我的紋理的高分辨率版本?
退一步,有一些其他的自適應技術,我可以使用特定於OpenGL紋理內存?
注:
我已經搜查和關閉SO爲與可用RAM檢測的答案,但他們基本上都勸告剖析內存使用情況和消除浪費(減少臨時對象的生命週期,以及所有廢話)。我儘可能多地完成了這些工作,而且我無法將高分辨率紋理壓縮到較舊的設備中。
PVRTC不是一個選項。紋理包含片段着色器要使用的數據,並且必須以無損格式存儲。
注意,您可以同時獲得總RAM和在這個線程詳細的可用RAM統計[iOS上的可用內存(http://stackoverflow.com/questions/5012886)。另外,我測試了我的iPhone 4上的代碼,它效果很好! –