2012-05-02 29 views
7

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.

+0

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 –

+0

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. –

Trả lời

2

Xem hướng dẫn xem chương trình: Xem Geometry và Coordinate Systems

http://developer.apple.com/library/ios/#DOCUMENTATION/WindowsViews/Conceptual/ViewPG_iPhoneOS/WindowsandViews/WindowsandViews.html

Phối hợp các giá trị được biểu diễn bằng số dấu chấm động, trong đó cho phép bố cục chính xác và định vị nội dung bất kể là độ phân giải màn hình cơ bản

Tha t có nghĩa là điểm bạn chỉ định (GCRect vv ...) không phải là pixel - đó là một điểm được điều chỉnh cho võng mạc/không võng mạc

Cuối cùng là Cocoa Priest lưu ý, bạn có thể duy trì hình ảnh png và * @ 2x. png phiên bản của hình ảnh của bạn:

Retina Display Images on iPhone

What is the point of the @2x for Retina display apps?

Ngoài ra, đây là một bài viết về thiết kế cho võng mạc: http://globalmoxie.com/blog/designing-for-iphone4-retina-display.shtml

+2

Tôi đánh giá cao phản hồi. Tôi chắc chắn sẽ đọc trên hướng dẫn đó. Tôi không nghĩ rằng điều này sẽ làm việc cho tôi (có thể bị nhầm lẫn). Như tôi đã đề cập trước, tất cả hình ảnh của tôi là từ OpenGL ES chứ không phải UIKit. –

-2

bạn chỉ cần có @ 2x phiên bản của hình ảnh trong gói của mình. iOS tự động lấy @ 2x-phiên bản nếu nó chạy trên phần cứng võng mạc

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