나는 장치의 RAM 크기에 따라 조정하려는 텍스처가 많은 OpenGL 게임을 가지고 있습니다. 가장 높은 해상도 텍스처 iPhone4 또는 iPad2에서 정상적으로 작동하지만 이전 장치는 텍스처를로드하는 도중에 충돌합니다. 저 텍스처의 저해상도 버전이 있지만이를 사용할시기를 알아야합니다.iOS의 RAM 가용성에 대한 응답
내 현재 전술은 IPad2 이상 및 iPhone 4 이상에 대한 고해상도 텍스처 만로드하는 특정 구형 장치 (3GS는 고해상도 화면, iPad에는 카메라가 없음)를 감지하는 것입니다. iPod touch 용으로 뭔가를해야합니다. 하지만 모델 검색은 API 및 하드웨어의 향후 변경에 취약하기 때문에 하드 코딩 장치 모델보다 기능 감지를 사용하는 편이 낫습니다.
내가 생각하고있는 또 다른 가능성은 고해상도 텍스처를 먼저로드 한 다음 드롭 다운하고 낮은 메모리 경고가 표시되는 순간이를로 고침으로 바꾸는 것입니다. 그러나 나는 응답 할 수있는 기회를 갖게 될지 확신하지 못한다. 디버그 콘솔에 알림이 나타나기 전에 앱이 자주 죽는 것으로 나타났습니다.
실행중인 장치가 고해상도 텍스처를로드 할 수있는 RAM이 부족한 지 어떻게 감지합니까?
한 걸음 뒤로 물러나면 OpenGL 텍스처 메모리에만 사용할 수있는 다른 적응 기술이 있습니까?
주 :
내가에 사용 가능한 RAM 탐지에 관한 답변 SO 떨어져 검색 한, 그러나 그들 모두는 기본적으로 메모리 사용을 프로파일 링 및 임시직의 수명을 최소화 (폐기물을 제거하는 조언하고, 모든 시시한 이야기). 내가 할 수있는 한 많은 작업을 했으므로 오래된 장치에 고해상도 텍스처를 집어 넣을 방법이 없습니다.
PVRTC는 (는) 선택 사항이 아닙니다. 텍스처에는 조각 쉐이더에서 사용할 데이터가 포함되어 있으므로 무손실 형식으로 저장해야합니다.
이 스레드 [iOS의 여유 메모리] (http://stackoverflow.com/questions/5012886)에 설명 된대로 총 램 및 프리 램 통계를 얻을 수 있습니다. 또한, 내 아이폰 4 코드를 테스트하고 잘 작동합니다! –