2012-02-02 43 views
6

Tôi vừa cài đặt bản phát hành Xcode 4 hiện tại và nhận ra API "GLKit" mới cũng được sử dụng trong Mẫu OpenGL cho iOS. Vì vậy, tôi muốn phát triển một trò chơi chéo plattform cho iOS, Mac & Windows. GLKit có vẻ giống như một bước lùi về tính di động, nhưng các tính năng GLKit (đặc biệt như tải kết cấu không đồng bộ) là những lợi ích tuyệt vời ...Phát triển đa nền tảng với GLKit?

Làm cách nào để phát triển một trò chơi dạng plattform với GLKit? Tôi sẽ cần phải viết bất kỳ mã grapics hai lần, phải không? Hoặc là có một cái gì đó giống như một thực hiện GLKit cho các cửa sổ?

Bất kỳ ý tưởng, giải pháp thay thế, tư vấn thiết kế mã (cách chia mã GLKit từ các thành phần khác?) Được hoan nghênh - cảm ơn!

Trả lời

5

Tôi không thể nghĩ ra bất kỳ điều gì mà GLKit thực hiện không thể thay thế bằng mã không phải GLKit. Nó có thể làm cho một số nhiệm vụ OpenGL ES 2.0 đơn giản hơn bằng cách trừu tượng hóa chúng khỏi bạn, nhưng nó không làm bất cứ điều gì độc đáo. Gần nhất nó có một thứ mà bạn không thể sao chép ở nơi khác (từ những gì tôi đã sửa đổi) là các hàm toán học ma trận và vector tăng tốc mà nó cung cấp, nhưng ngay cả những hàm có thể được thay thế bằng mã Accelerate hoặc NEON.

Trong khi tôi muốn sử dụng GLKit trong các ứng dụng của mình, tôi vẫn hỗ trợ iOS 4.2 với chúng, không có sẵn GLKit. Không có gì mà tôi hiện đang ngăn cản vì tôi không thể sử dụng GLKit, tôi chỉ phải viết thêm một chút mã để xử lý những thứ như cập nhật lượt xem, tải lên kết cấu, toán ma trận, v.v. Có rất nhiều tài liệu và ví dụ ngoài đó cho các hoạt động này, vì vậy bạn không cần phải lo lắng về việc tự mình thực hiện khi thực hiện chúng.

Bạn sẽ gặp vấn đề lớn hơn nhiều so với GLKit khi cố gắng làm cho mã của bạn trở thành nền tảng chéo với máy Mac và đặc biệt là với Windows. OpenGL của máy tính để bàn và OpenGL ES có một số khác biệt trong việc triển khai và bạn cần phải biết các địa điểm để thay thế một hàm hoặc biến được tạo sẵn cho một hàm khác. CAOpenGLLayer và NSOpenGLView trên Mac cũng khác với CAEAGLLayer trên iOS và AppKit tổng thể là một con vật khác với UIKit.

Windows sẽ còn có nhiều thách thức để hỗ trợ, bởi vì bạn sẽ không thể sử dụng bất kỳ khung công tác Cocoa nào và hầu như không có Objective-C. Điều này sẽ mất nhiều thời gian hơn bất kỳ sự khác biệt OpenGL/OpenGL ES nào.

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