2012-03-17 75 views
14

Celestia là một ứng dụng tuyệt đẹp để hiển thị 3D không gian thời gian thực, với mô hình chi tiết của hệ mặt trời, trên 100.000 sao, hơn 10.000 thiên hà và cơ chế mở rộng để thêm nhiều đối tượng.Làm thế nào để xây dựng Celestia cho Android?

Nó có thể chạy trên windows, mac os, linux, freeBSD, sau đó có cổng Android nào không? hoặc làm thế nào để xây dựng hoặc chuyển nó sang Android?

+0

câu hỏi hay Tôi đã tạo thẻ cho celestia và chỉnh sửa questio, có thể nó sẽ thu hút sự chú ý hơn, nếu không bạn có thể cung cấp tiền thưởng – aaronman

+1

Tôi nghĩ đây là câu hỏi nhiều hơn về việc thiết bị Android của bạn có thể xử lý nó không? Đối với mô phỏng hệ mặt trời cơ bản thì OK, nhưng khi bạn bắt đầu thêm tiểu hành tinh, sao chổi, sao, thì bạn đột nhiên cần phần lớn bộ nhớ không phải tất cả các thiết bị Android đều có thể xử lý. Điểm khác là tốc độ càng ít đối tượng càng chạy nhanh hơn ... có bạn có thể cập nhật vị trí với tốc độ chậm nhưng khi bạn muốn đột nhiên tính toán toàn bộ cảnh mất thời gian Thêm đồ họa 3D nhân tất cả điều này. Vì vậy, câu hỏi là thiết bị nào sẽ chạy trên chất lượng mô phỏng/render trước khi bắt đầu cổng ... – Spektre

+1

Nếu bạn có máy tính để bàn như nguồn thì chắc chắn nó sẽ chạy và bạn có thể thử cổng. Lấy [mã nguồn] (http://sourceforge.net/projects/celestia/files/Celestia-source/) và viết lại tất cả những thứ phụ thuộc vào hệ điều hành/nền tảng cho môi trường của bạn. Đó là số lượng lớn công việc cần làm với mã nguồn không xác định. Đặc biệt là nếu bạn không biết những gì và làm thế nào nó ... Nhìn ở đây [thực tế n-body mô phỏng hệ thống năng lượng mặt trời] (http://stackoverflow.com/a/28020934/2521214) làm thế nào các chương trình như vậy thường hoạt động – Spektre

Trả lời

1

xây dựng trên ý kiến ​​Spektre và với một cái nhìn lướt qua, bạn sẽ cần phải:

  1. Lấy mã (hoặc từ SVN hoặc một Git fork)
  2. Chuyển đổi hệ thống automake build to NDK
  3. thay thế tất cả mã phụ thuộc vào linux bằng NDK của Android (ví dụ: opengl) hoặc, tốt hơn, hãy thêm nền tảng mới
  4. Tạo giao diện người dùng mới. Có lẽ bạn có thể nhận được một số sử dụng ra khỏi Qt, vì nó works on android

Một số điều cần xem xét:

  • Mã cơ sở là khoảng 200k dòng, c/C++
  • Có một số phụ thuộc không bắt buộc (ví dụ: lua) và một số phụ thuộc bắt buộc (?) (ví dụ: OpenGL libs)
  • Bạn cần xem xét cẩn thận các mô-đun khác nhau. Ví dụ, "celengine" chứa hầu hết mã OpenGL.

IMHO, đây là một điều khó làm (tôi đã thực hiện khá nhiều cổng giữa các hệ điều hành trong những năm qua, mặc dù với các cơ sở mã nhỏ hơn). Cách tiếp cận của tôi sẽ thay vì xây dựng một điều mới (lib, app) bằng cách sử dụng dữ liệu có sẵn, và thêm chức năng và các thành phần NDK trong thời gian.

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