2012-01-05 17 views
5

Tôi hiện đang làm việc trên một trò chơi OpenGL và gần đây đã bắt đầu tái cấu trúc nó để hỗ trợ iPhone ngoài iPad. Trong nỗ lực làm việc ít nhất có thể, tôi chỉ đơn giản là thay đổi kích thước của EAGLView thành 480 x 360 (để giữ tỷ lệ khung hình của iPad) và chuyển chế độ xem sao cho nguồn gốc y nằm ở -20 (để căn giữa nội dung và các cạnh có thể bị cắt).Vấn đề hiệu suất OpenGL ES khi UIView bị tắt một phần

Tôi thấy điều này dẫn đến hiệu suất giật trên thiết bị (mặc dù liên kết CADisplay báo cáo thời lượng khung tương đương với 59-61 khung hình/giây) và chậm hơn ít nhất 20% khi so sánh song song với phiên bản iPad.

Sau đó, tôi đã thử thay đổi kích thước chế độ xem thành kích thước màn hình 480 x 320 và hiệu suất được trả về bình thường (mặc dù nội dung được hiển thị không còn có tỷ lệ khung hình chính xác).

Tại sao hiển thị 'tắt màn hình' lại gây ra hiệu suất truy cập và tại sao liên kết hiển thị vẫn cho rằng nó đang chạy ở tốc độ 60 khung hình/giây?

Bất kỳ ý tưởng nào? Cảm ơn

Trả lời

0

Điều này chủ yếu là phỏng đoán hoang dã, nhưng điều gì về các vùng cắt? Có chức năng phần cứng này làm cho nó có thể trộn các cửa sổ và đồ họa tăng tốc phần cứng. Có thể nó không được triển khai rất tốt trên các thiết bị di động.

Tuy nhiên, bạn có thể tránh tạo màn hình ngoài UIView và cố gắng sử dụng glViewport() để thay đổi các phần của màn hình ngoài chế độ xem. Trong khi nó có vẻ giống nhau, nó được xử lý bởi một phần khác của đường ống (rasterizer), và sẽ nhanh hơn nhiều.

+0

Cảm ơn bạn đã phản hồi, tôi đã kết thúc chỉnh sửa chế độ xem như bạn đã nói và giờ nó chạy như một giấc mơ – Weaverfish

+0

Vui mừng khi biết rằng ... –

Các vấn đề liên quan