Tôi có trò chơi OpenGL có kết cấu nặng mà tôi muốn điều chỉnh dựa trên lượng RAM thiết bị có. Các kết cấu có độ phân giải cao nhất tôi đã hoạt động tốt trên iPhone 4 hoặc iPad2, nhưng các thiết bị trước đó bị hỏng ở giữa tải họa tiết. Tôi có phiên bản có độ phân giải thấp của các họa tiết này, nhưng tôi cần phải biết khi nào nên sử dụng chúng. Chiến lược hiện tại của tôi là phát hiện các thiết bị cũ cụ thể hơn (3GS có màn hình có độ phân giải thấp; iPad không có máy ảnh), sau đó chỉ tải cấu hình độ phân giải cao cho IPad2 trở lên và iPhone 4 trở lên - và tôi giả sử tôi sẽ cần phải làm một cái gì đó cho iPod touch. Nhưng tôi muốn sử dụng tính năng phát hiện nhiều hơn các mô hình thiết bị mã hóa cứng, vì việc phát hiện mô hình rất mỏng manh so với các thay đổi trong tương lai đối với các API và phần cứng.Trả lời tính khả dụng của RAM trong iOS
Một khả năng khác mà tôi đang xem xét là tải cấu trúc có độ phân giải cao trước, sau đó thả và thay thế chúng bằng lo-res vào thời điểm tôi nhận được cảnh báo bộ nhớ thấp. Tuy nhiên, tôi không chắc mình sẽ có cơ hội phản ứng; Tôi đã nhận thấy rằng ứng dụng thường chết trước khi bất kỳ thông báo nào xuất hiện trên bảng điều khiển gỡ lỗi.
Làm cách nào để phát hiện xem thiết bị tôi đang chạy có RAM không đủ để tải phiên bản có độ phân giải cao của họa tiết của tôi không?
Quay lại một bước, có một số kỹ thuật thích ứng khác mà tôi có thể sử dụng cụ thể cho bộ nhớ kết cấu OpenGL không?
Ghi chú:
tôi đã tìm kiếm và tắt SO cho câu trả lời liên quan đến phát hiện RAM có sẵn, nhưng tất cả đều về cơ bản tư vấn cho profiling sử dụng bộ nhớ và loại bỏ chất thải (giảm thiểu thời gian tồn tại của temporaries, và tất cả những gì guff). Tôi đã làm nhiều như tôi có thể, và không có cách nào tôi sẽ siết chặt các cấu trúc hi res vào các thiết bị cũ.
PVRTC không phải là một tùy chọn. Các họa tiết có chứa dữ liệu được sử dụng bởi các trình đổ bóng phân mảnh và phải được lưu trữ theo định dạng không mất dữ liệu.
Lưu ý rằng bạn có thể có được cả hai tổng ram và số liệu thống kê ram miễn phí như chi tiết trong chủ đề này [bộ nhớ miễn phí trên iOS] (http://stackoverflow.com/questions/5012886). Ngoài ra, tôi đã thử nghiệm mã trên iPhone 4 của tôi và nó hoạt động tốt! –