2009-07-16 10 views
7

Hiện tại tôi có một giao diện người dùng khiến việc sử dụng lõi hoạt ảnh không thể tin được. Tôi tự hỏi nếu nó là giá trị để dành thêm 2 tháng cho việc học tập OpenGL ES? Điều đó có thực sự cải thiện hiệu suất vẽ cho bề mặt 2D không? Tôi không có vật thể 3D, nhưng những thứ 2D hoạt hình cao. Đôi khi với biến dạng 3D, rất nhiều phép quay và chia tỷ lệ.OpenGL ES có hiệu suất tốt hơn Core Animation và UIKit khi nói đến giao diện người dùng hoạt hình cao?

Cụ thể là tôi đã tạo ra một trò chơi hoàn toàn với rất nhiều sprites chỉ bằng CA. Hiệu suất là ok nhưng không hoàn hảo.

Trả lời

3

Tùy thuộc vào những gì bạn đang làm và thiết bị bạn đang nhắm mục tiêu. Nếu bạn đang làm những thứ sẽ được hưởng lợi từ một kênh đồ họa có thể lập trình và nhắm mục tiêu iPhone 3GS thì bạn có thể thấy một số lợi ích, đơn giản vì chức năng đó không được hiển thị thông qua CoreAnimation, do đó bạn phải thực hiện nó theo những cách kỳ lạ (thao tác hình ảnh, v.v.) Phần cứng iPhone 3G không có các trình đổ bóng có thể lập trình, do đó ngay cả khi các hiệu ứng của bạn có thể được thể hiện dưới dạng các trình chuyển bóng di chuyển sang OpenGL sẽ không cung cấp lợi ích đó trên điện thoại cũ.

Nếu tất cả các bạn đang làm là di chuyển, xoay, và mở rộng quy mô bề mặt 2D sau đó CoreAnimation đang xảy ra để cung cấp cho hiệu suất rất giống với OpenGL, tốt hơn một chút hoặc tệ hơn tùy thuộc vào cách dữ liệu của bạn là nhận được vào các lớp vv

5

Về lý thuyết OpenGL nên là API nhanh nhất trên thiết bị, đơn giản vì nó gần nhất với phần cứng. Trong OpenGL bạn có thể thực hiện một số thủ thuật thông minh sẽ giúp hiệu suất của bạn khá nhiều - bạn có thể vẽ các họa tiết theo lô, bạn có thể sử dụng các điểm sprites, bạn có thể thử nén các họa tiết , vv ..

Mặt khác, bạn nhận được rất gần với phần cứng và không có nhiều trừu tượng còn lại, ít nhất là khi so sánh với Core Animation. Bạn phải đối phó với các kết cấu, dự đoán, ma trận phi quyền lực, bạn phải tự viết mã hoạt hình, v.v. Có rất nhiều nơi bạn có thể đi sai và nghiêm túc giết hiệu suất thay vì làm cho nó tốt hơn.

Điều tôi thích về OpenGL là nền tảng đa nền tảng. Có rất nhiều tài nguyên về OpenGL, có rất nhiều không gian để cải thiện. Nếu bạn muốn viết trò chơi và có thời gian để tìm hiểu OpenGL, hãy làm điều đó. Việc đưa các khái niệm cơ bản về OpenGL vào thiết kế OOP không khó và cuối cùng bạn sẽ nhận được nhiều không gian hơn để cải thiện hiệu suất. Một nơi tốt để bắt đầu là Cocos 2D engine for iPhone.


(Disclaimer: Tôi chỉ biết một chút về OpenGL và không có gì nhiều về Core Animation Tôi đã viết hai trò chơi 2D cho iPhone sử dụng OpenGL..)

4

tôi hỏi những câu hỏi tương tự của người dân tại WWDC tháng trước và câu trả lời chắc chắn là có - nếu bạn dành thời gian để sử dụng OpenGL ở mức thấp, bạn sẽ nhận được hiệu suất tốt hơn cho 2D.