2012-03-13 34 views
5

Điều gì sẽ là sự khác biệt, mục đích khôn ngoan, giữa hai phương pháp này trong vòng lặp kết xuất của tôi?Sự khác biệt giữa glkView: drawInRect: và glkViewControllerUpdate :? OpenGL ES 2 - iOS

Apple có này để nói ....

Về cập nhật() Bộ điều khiển xem gọi glkViewControllerUpdate đại biểu của nó: phương pháp. Đại biểu của bạn nên cập nhật dữ liệu khung không liên quan đến việc hiển thị kết quả cho màn hình.

Giới thiệu drawInRect: đối tượng GLKView làm cho bối cảnh OpenGL ES của nó bối cảnh hiện tại và liên kết framebuffer của nó làm mục tiêu cho lệnh hiển thị OpenGL ES. Sau đó, phương thức đại biểu của bạn sẽ vẽ nội dung của chế độ xem.

Vì vậy, về cơ bản, khi tôi tạo GLKView trong bộ điều khiển chế độ xem của tôi, bộ điều khiển đó sẽ trở thành mục yêu thích, vì vậy tôi đang xem xét các phương pháp này cạnh nhau.

Tôi giả định rằng bản cập nhật() nên chứa mọi biến đổi hoặc logic khác.

Trả lời

4

Trong trường hợp đầu tiên, Apple đang cố gắng giúp bạn tách thời gian khỏi tốc độ khung hình. Nếu trò chơi của bạn luôn quản lý để vẽ một khung trong thời gian được phân bổ cho một khung duy nhất, cả hai sẽ xuất hiện ở chế độ khóa. Nhưng ngay cả khi rất nhiều đối tượng xuất hiện trên màn hình và tốc độ khung hình của bạn hơi chậm, bạn vẫn sẽ nhận được cùng số lượng bản cập nhật trong một giây để các đối tượng vẫn di chuyển với cùng tốc độ.

Trong lần thứ hai, chúng giúp bạn giữ mã của mình được chia làm bộ điều khiển kiểu xem. Làm thế nào các đối tượng của bạn được trình bày nên được tách rời từ cách họ hành động.

Vì vậy, bản cập nhật của bạn sẽ tiến triển bất cứ điều gì gây ra hoạt ảnh của bạn, bản vẽ của bạn sẽ trình bày trạng thái hiện tại.

+0

Tôi hiểu. Vì vậy, ví dụ trong Space Invaders, một con tàu mới vào chế độ xem mô hình hoặc người chơi phóng to trên một hành tinh sẽ là trách nhiệm cập nhật. Trong khi drawInRect: chỉ đơn giản là dự án ma trận, lên đến tốc độ khung hình mong muốn, nhưng không phải lúc nào cũng có thể theo kịp phụ thuộc vào tải. –

+0

Có - mọi logic cập nhật trạng thái của trò chơi sẽ là một phần của bản cập nhật, cho dù đó là thêm mô hình mới hoặc di chuyển máy ảnh. – Tommy

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