Tôi đang tìm kiếm lời khuyên trước khi đi sâu vào dự án tiếp theo của mình. Tôi muốn hỗ trợ tất cả các độ phân giải khác nhau hiện đang được hỗ trợ bởi iOS (võng mạc, iPhone không phải võng mạc và cả 3 iPad).Phát triển cho các màn hình Retina và không phải võng mạc OpenGL ES
Cách phổ biến nhất mà nhà phát triển thực hiện là gì? Tôi đã thấy những câu hỏi tương tự được hỏi nhưng về bản chất cụ thể. Tôi đang tìm gói hoàn chỉnh. I E. Tôi muốn hỗ trợ các phông chữ bitmap có độ phân giải khác nhau, hình ảnh, v.v.
Công tắc cụ thể của thiết bị, hoặc nếu câu lệnh chuẩn?
Cảm ơn tất cả trợ giúp nâng cao.
E
Chỉnh sửa: Tôi đã thấy điều này từ Apple:
Blockquote Nếu ứng dụng của bạn sử dụng OpenGL ES để render, mã bản vẽ hiện tại của bạn nên tiếp tục làm việc mà không cần bất kỳ thay đổi. Tuy nhiên, khi được vẽ trên màn hình có độ phân giải cao, nội dung của bạn sẽ được thu nhỏ lại và sẽ xuất hiện nhiều hơn. Lý do cho sự xuất hiện khối ô vuông là hành vi mặc định của lớp CAEAGLLayer, mà bạn sử dụng để trả về các hàm renderbuilder OpenGL ES của bạn, giống như các đối tượng lớp Core Animation khác. Nói cách khác, yếu tố tỷ lệ của nó được đặt thành 1.0 ban đầu, điều này khiến cho bộ phận kết hợp Hoạt ảnh cốt lõi chia tỷ lệ nội dung của lớp trên màn hình có độ phân giải cao. Để tránh sự xuất hiện khối ô vuông này, bạn cần phải tăng kích thước của biểu tượng kết xuất OpenGL ES của bạn để phù hợp với kích thước của màn hình. (Với nhiều pixel hơn, bạn có thể tăng số lượng chi tiết mà bạn cung cấp cho nội dung của mình). Bởi vì việc thêm nhiều pixel vào renderbuffers của bạn có tác động hiệu quả, tuy nhiên, bạn phải chọn tham gia hỗ trợ màn hình có độ phân giải cao.
Blockquote Để bật bản vẽ có độ phân giải cao, bạn phải thay đổi hệ số tỷ lệ của chế độ xem bạn sử dụng để trình bày nội dung OpenGL ES của mình. Thay đổi thuộc tính contentScaleFactor của chế độ xem của bạn từ 1.0 thành 2.0 sẽ kích hoạt một thay đổi phù hợp với hệ số tỷ lệ của đối tượng CAEAGLLayer bên dưới. Phương thức renderbufferStorage: fromDrawable: mà bạn sử dụng để liên kết đối tượng lớp với renderbuffers của bạn, tính toán kích thước của renderbuffer bằng cách nhân các giới hạn của lớp với hệ số tỷ lệ của nó. Vì vậy, nhân đôi yếu tố tỷ lệ tăng gấp đôi chiều rộng và chiều cao của renderbuffer kết quả, cho bạn nhiều pixel hơn cho nội dung của bạn. Sau đó, bạn có thể cung cấp nội dung cho các pixel bổ sung đó.
Vì vậy, tôi đoán câu hỏi được cập nhật của mình là làm cách nào để tăng gấp đôi yếu tố tỷ lệ được mô tả ở trên?
Chỉnh sửa 2:
Tôi gần như có ...
Tôi đang sử dụng này để mở rộng bên EAGLView tôi:
// Adjust for retina displays
if ([self respondsToSelector:@selector(setContentScaleFactor:)])
{
self.contentScaleFactor = [[UIScreen mainScreen] scale];
}
Vấn đề duy nhất mà bây giờ vẫn còn là nguồn gốc là bằng cách nào đó sai lầm. Hiển thị hình ảnh hiện đang mở rộng theo độ phân giải, nhưng trên độ phân giải lớn hơn, hình ảnh bắt đầu ở giữa màn hình.
Vui lòng trợ giúp!
Chỉnh sửa 3: Đã giải quyết !!!! Tôi đã trải qua những vấn đề trong định hướng của mình.
Bạn cần đảm bảo bản dịch của mình được cập nhật.Tôi đã sử dụng điều này:
glTranslatef(width/2, height /2, 0);
glRotatef(-90, 0, 0, 1);
glTranslatef(-1 * (height/2),-1 * (width/2),0);
Cảm ơn ngoại hình. Tôi hi vọng điêu nay se giup được ai đo.
Bất kỳ may mắn với thiết trị nội dung tScale = 2 trên iPad3 hỗ trợ võng mạc? http://stackoverflow.com/questions/11276027/where-to-start-with-an-opengl-painter-for-the-retina-display –
Tôi chưa thử màn hình iPad võng mạc. Khi tôi làm tôi sẽ liên lạc lại. –