Thư viện toán hoàn chỉnh để sử dụng trong trò chơi OpenGL ES 2.0? [đóng cửa]


14

Bạn có biết về một thư viện toán học đa nền tảng hoàn chỉnh (hoặc gần như hoàn chỉnh) để sử dụng trong các trò chơi OpenGL ES 2.0 không?

Thư viện nên chứa:

  • Các lớp Matrix2x2, Matrix 3x3, Matrix4x4
  • Đệ tứ
  • Các lớp Vector2, Vector3, Vector4
  • Lớp góc Euler
  • Hoạt động giữa các lớp được đề cập ở trên, chuyển đổi, vv ..
  • Các phép toán được sử dụng chuẩn trong đồ họa 3D (Sản phẩm Dot, Sản phẩm chéo, SLERP, v.v ...)

Có API toán học như vậy có sẵn độc lập hoặc là một phần của bất kỳ gói nào không?

Ngôn ngữ lập trình: Visual C ++ nhưng được lên kế hoạch chuyển sang OS X và HĐH Android.



Hiện tại không có thư viện toán học hoàn hảo, tôi chỉ cố gắng viết một vài yêu cầu và không có thư viện nào có chúng, thực tế tôi muốn ai đó tạo một thư viện dễ dàng như GLM với chức năng tương tự như shader + kiểu của thư viện toán học Ogre và một số chức năng của nó (GLM bị lỗi như xem bực bội, hộp giới hạn, v.v.) Cũng lưu ý rằng GLM không nhanh như vậy (trong thực tế không quan trọng) vì vậy tôi nghi ngờ ai đó sẽ sử dụng nó trong raytracers hoặc công cụ chuyên sâu, hơn thế nữa hữu ích vì API và phong cách thiết kế của nó
GameDeveloper

Câu trả lời:


14

+1 @Josh: Cảm ơn vì lời khuyên tốt của bạn. Tôi hiện đang xem xét thư viện GL Math ( glm.g-truc.net ). Tôi sẽ chờ xem những thư viện mà mọi người đã thử và đã được chứng minh là tốt.
Bunkai.Satori

3
Id rất khuyến khích GLM. Tôi sử dụng nó và "tuyệt vời" của nó
brainydexter

+1, tôi thích CML rất nhiều và đã đăng nó dưới dạng câu trả lời =). Tuy nhiên, nó phụ thuộc rất nhiều vào việc tối ưu hóa trình biên dịch, vì nó dựa trên mẫu chung và mẫu. Nếu bạn đang nhắm mục tiêu một thiết bị di động (có thể như bạn đã trích dẫn ES), một số thư viện toán học khác có thể được tối ưu hóa tốt hơn cho mục tiêu.
Jari Komppa

Xin chào Brainy, Jari, cảm ơn ý kiến ​​của bạn. Tôi vẫn muốn xem, nếu có nhiều tùy chọn hơn với phản hồi của người dùng, do đó, tôi muốn giữ câu hỏi này mở trong một thời gian.
Bunkai.Satori

@Jari - khi thảo luận về Tối ưu hóa Thư viện Toán học cho nền tảng OpenGL ES, bao gồm những gì? Ý tôi là, nếu công thức và kiểu dữ liệu được thiết kế đúng thì có thể làm gì khác để tối ưu hóa thư viện cho nền tảng ES? (Đây có thể là câu hỏi cơ bản, nhưng tôi không có câu trả lời cho điều đó.)
Bunkai.Satori

8

Eigen là một thư viện toán học chỉ có tiêu đề C ++ hỗ trợ vector hóa SSE, AltiVec và ARM Neon.


+1 cho mẹo tuyệt vời. Xin chào Simon, cảm ơn vì lời khuyên tuyệt vời của bạn. Tôi bắt đầu sử dụng GLM (Thư viện toán học OpenGL) và nó thật tuyệt vời. Nó chứa tất cả mọi thứ từ vectơ, ma trận, toán học tứ phương, xen kẽ SLERP, v.v ... cho đến nay, nó cung cấp nhiều hơn tôi thực sự cần, vì vậy bây giờ tôi hài lòng với nó.
Bunkai.Satori

6

+1 cho các mẹo hay. Xin chào Maik, cảm ơn ý kiến ​​của bạn. Theo tôi, thứ hai có thể hữu ích đặc biệt là khi trò chơi tích hợp Bullet Vật lý. Trò chơi của tôi sẽ sử dụng Bullet Vật lý, nhưng không may, tôi đã bắt đầu sử dụng GLM, vì vậy tôi sẽ cố gắng gắn bó với GLM.
Bunkai.Satori

4

Tôi đã làm việc để thêm GLKMath của Apple vào thử nghiệm này (thực sự là rẽ nhánh này )

Đây là kết quả trên iPod Touch thế hệ 4 của tôi :

Eigen:
Additions: 77624 milliseconds.
Multiplications: 227179 milliseconds.

GLM:
Additions: 23935 milliseconds.
Multiplications: 80599 milliseconds.

CML:
Additions: 102390 milliseconds.
Multiplications: 161059 milliseconds.

GLKMath:
Additions: 8526 milliseconds.
Multiplications: 21775 milliseconds.

Đây là mã của tôi

Tôi không có Thiết bị Android, nhưng tôi tò mò GLKMath sẽ hoạt động như thế nào trên Android.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.