2012-03-12 29 views
8

Tôi đang phát triển ứng dụng riêng cho cả Android và iOS bằng SDK gốc của chúng. Tuy nhiên, có một số mô-đun trong ứng dụng hỗ trợ 2D cơ bản (nó cũng có thể là 3D) như nghiêng, mở rộng, xoay đồ họa vector + tất cả các loại hiệu ứng ưa thích tùy chọn trên các mặt phẳng kết cấu đơn giản chẳng hạn.Tìm phương pháp đa nền tảng cho đồ họa 2D/3D cơ bản cho iOS và Android

Tôi muốn lưu trữ mô-đun này bên trong một số cột của chế độ xem và mã của nó sẽ được chia sẻ giữa cả nền tảng iOS và Android, càng nhiều càng tốt.

Tôi đã lẩn trốn khắp nơi trên web cho tất cả các loại giải pháp.

  1. Trước hết có OpenGL, vấn đề là tôi không quen với mã hóa cho OpenGL và tôi không thể hiểu được liệu mã tôi sẽ viết với OpenGL sẽ có thể chia sẻ giữa 2 nền tảng. Có vẻ như không ai thực sự cố gắng làm điều đó với NDK và như vậy.
  2. Có các nền tảng như

    a. Clutter (http://www.clutter-project.org/) - Tôi không thể tìm thấy bất kỳ ví dụ nào về việc sử dụng nó trên thiết bị di động.

    b. Nền tảng như Unity3D, mặc dù tôi không nghĩ rằng họ có thể giúp tôi nhiều vì theo tôi hiểu toàn bộ ứng dụng phải chạy trên nền tảng của họ, và đó không phải là những gì tôi đang tìm kiếm.

Vì vậy, các bạn có nghĩ rằng có khả năng chia sẻ mã 2d/3d giữa iOS và Android không? Nếu có, bạn có thể giới thiệu phương pháp nào không?

Hoặc tôi có nên sử dụng phương pháp gốc của từng thiết bị cho đồ họa 2d hoặc 3d không?

Cảm ơn!

Trả lời

6

Kivy: ngôn ngữ lập trình đa nền tảng nguồn mở để viết các bản vẽ, giao diện, hình ảnh, mọi thứ cho Linux, Windows, MacOSX, Android và iOS. kivy.org

Bạn có khả năng có thể thả bằng cách sử dụng tiện ích gốc của Android hoặc iOS cho tiện ích Kivy và ứng dụng của bạn sẽ có cùng giao diện OpenGL trên tất cả các nền tảng.

EDIT 9/27/11 1pm: Tôi đã thực hiện một số nghiên cứu khác. Tất cả trong tất cả, bạn nên kiểm tra những 4 khung mã nguồn mở cho chính mình và quyết định cái nào là tốt nhất cho bạn (tôi có thể liệt kê các khuôn khổ thương mại, nhưng đó là dễ dàng để tìm thấy):

  1. Kivy (kivy.org)
    • Thư viện GUI và Tiện ích tuyệt vời.
  2. HaxeNME (haxenme.org)
    • Rất đẹp API 2D/3D để làm đồ họa OpenGL.
    • Tuyệt vời hỗ trợ đa nền tảng. Tốt nhất trong tất cả các khung công tác.
    • Thật không may, không có thư viện GUI hoặc Widget nào được tích hợp.
  3. Qt nhanh QML (qt-project.org)
    • Rất đẹp API 2D/3D để làm đồ họa OpenGL.
    • Tương tự như HTML, nhưng dành cho OpenGL. Đã biết HTML và JavaScript? QML (Ngôn ngữ đánh dấu nhanh) bao gồm các nhu cầu cơ bản như trường văn bản, nút radio, hộp kiểm, v.v., có thể được hoạt hình và được điều khiển bằng trình xử lý sự kiện. Ảnh động, trình xử lý sự kiện, v.v., trong ứng dụng QML của bạn được viết bằng JavaScript; sự khác biệt là JavaScript được biên dịch thay vì diễn giải.
    • Qt Nhanh thật sự tuyệt vời; yêu thích cá nhân của tôi. Đọc trên Qt Quick QML rồi thử ứng dụng Animated Tiles dành cho Android để xem tiềm năng của Qt Quick. Phiên bản mới nhất của Qt (sắp ra mắt) hỗ trợ iOS, Android và Blackberry cũng như tất cả các hệ điều hành dành cho máy tính để bàn. Windows Phone là một công việc đang được tiến hành nhưng sẽ sớm được đưa ra xem xét rằng Qt Quick đã hỗ trợ nền tảng Metro của Windows 8. Qt Quick rất hay, nhưng nó không hoạt động trên mọi nền tảng như HaxeNME.
  4. MoSync (mosync.com)
    • Một viên ngọc ẩn. Khuôn khổ này cần tiếp xúc nhiều hơn. MoSync SDK cung cấp một khung công tác OpenGL nền tảng, một khung công tác HTML/JavaScript tương tự như PhoneGap, một khuôn khổ NativeUI để viết các ứng dụng trên nền tảng sử dụng các tiện ích giao diện người dùng gốc của mỗi nền tảng và MAUI để viết C++ GUI.
    • Nếu bạn đã được giải quyết bằng cách chỉ viết OpenGL tinh khiết, thì ít nhất tôi khuyên bạn nên kiểm tra MoSync, vì nó cung cấp triển khai 1-to-1 OpenGL ES 1.0/2.0.

Ngoài ra, nếu ứng dụng của bạn sẽ được dựa trên hình thức (không quá nhiều hoạt hình giống như một trò chơi), sau đó PhoneGap có thể phù hợp với nhu cầu của bạn. Nếu bạn sử dụng các tính năng phù hợp của HTML5, bạn có thể làm cho các ứng dụng cảm thấy có nguồn gốc (không giống như nhiều ví dụ kinh khủng và không khuyến khích). Nếu bạn muốn thử một ứng dụng được tạo bằng PhoneGap có cảm giác "bản địa", hãy thử "Go 2012". Ứng dụng Go 2012 chứng minh rằng nếu bạn sử dụng HTML5 chính xác, bạn có thể tận dụng khả năng tăng tốc phần cứng trên các nền tảng (iOS, Android, Blackberry và Windows Phone (tôi đã thử nghiệm tất cả)). Các hình động (di chuyển, vv) trong Go 2012 là tất cả các hình động tăng tốc phần cứng CSS3. Đừng để chất lượng kém của hầu hết các ứng dụng trong showcase PhoneGap đánh lừa bạn!

+0

Có vẻ thú vị! Tôi sẽ cung cấp cho nó một cái nhìn sớm và xem nếu nó có thể phù hợp với nhu cầu của tôi. – Dror

+0

Tôi đã cập nhật câu trả lời của mình. : D – trusktr

1

Sử dụng OpenGL ES và viết mã bằng C. Viết trình bao bọc NDK cho Android. Về mặt lý thuyết, mã GL C mở của bạn nên được tái sử dụng giữa 2 nền tảng.

1

Bạn đã bao giờ lùa về tên công ty nhỏ Adobe

Hãy thử sử dụng Air.

Mọi người không đánh giá cao công việc khó khăn mà Adobe đã làm, nhưng đó là nền tảng chéo mạnh mẽ nhất hiện có trên thị trường!

Nó hỗ trợ:

  • Windows với DirectX truy cập để tăng tốc độ ứng dụng của bạn, cả trong không gian 3D và 2D.
  • Linux
  • Android (2.2 trở lên) với nền OpenGL
  • iOS với OpenGL
  • BlackBerry

Và nhiều hơn nữa ... Nếu bạn muốn làm việc trên cao, sử dụng Air!

+0

Tôi có thể sử dụng AIR chỉ cho một phần nhỏ ứng dụng của mình và để phần còn lại trong mã Android/iOS thông thường không? – Dror

+0

Có, bạn có thể sử dụng không khí bản địa để sử dụng ngôn ngữ mẹ đẻ của hệ thống hiện tại, nó sẽ là java với tất cả các api android trong Google và mục tiêu c fo iOS. Tôi sẽ khuyên bạn sử dụng xuất khẩu sang tương lai HTML5 của flash như thế nào nếu nó chỉ là một phần nhỏ trong ứng dụng của bạn –

+1

Nó có thể là tốt đẹp, nhưng xem xét Kivy, Qt Quick, HaxeNME và MoSync là miễn phí và mã nguồn mở (và tuyệt vời), tại sao mua Air? – trusktr

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