Có một thư viện đồ họa vector C ++ đa nền tảng tốt ngoài kia không? [đóng cửa]


9

Tôi đang làm một trò chơi và muốn sử dụng đồ họa vector. Tôi bắt đầu mã hóa lại nó bằng cách sử dụng Cairo và hiệu suất thật tuyệt vời. Vì vậy, tôi đang tìm kiếm một thư viện khác. Nó cần phải dành cho C ++ và đa nền tảng (ví dụ: không có Direct2D). Có một câu hỏi khác mà ai đó đã hỏi trước đây, nhưng không có câu trả lời phù hợp. Có phải có một cái gì đó ...?


"Câu hỏi đã hỏi trước", ý bạn là gamedev.stackexchange.com/questions/4788/ mẹo ?
Tetrad

@Tetrad: Câu hỏi trước đây hoàn toàn loại trừ đa nền tảng vì nó yêu cầu rõ ràng các giải pháp cho windows. Và các câu trả lời dường như chỉ hướng đến các giải pháp liên quan đến Windows.
Coyote

2
@Zach Hinchy: Khi bạn nói đa nền tảng, ý bạn là gì? Windows, Linux, OS X? Hay bạn bao gồm các nền tảng cầm tay iOS, Brew, Android?
Coyote

2
"Có phải là một cái gì đó ...?" Tại sao? Đồ họa vector, nói chung, không phải là thứ mà những người cần 30+ khung hình / giây làm. Trình duyệt web của bạn có tải các trang ở tốc độ 30 khung hình / giây không? Số 10fps là nhiều. Nếu bạn sử dụng đồ họa vector, đó là vì bạn đánh giá cao chất lượng hơn hiệu suất. Và do đó, thư viện đồ họa vector đánh giá chất lượng hơn hiệu suất. Bản thân Cairo không chậm, nhưng nó là một trình kết xuất đồ họa vector chất lượng. Và chất lượng đó có nghĩa là nó không cắt giảm hiệu suất.
Nicol Bolas

1
@iamcreasy: Có một sự khác biệt lớn giữa việc đơn giản là vẽ một hình tứ giác lớn hơn / nhỏ hơn và một thư viện đồ họa vector. Trò chơi kết xuất với GPU; họ không sử dụng một thư viện đồ họa vector. Họ không sử dụng Cairo hoặc AntiGrain hoặc bất cứ thứ gì thuộc về bản chất đó.
Nicol Bolas

Câu trả lời:


21

Tôi sợ chủ đề này khá phức tạp, một vài giải pháp đa nền tảng dường như đã được đưa ra, và thậm chí ít có vẻ như đã tự mình sống sót. Tôi đã xem xét chủ đề này vài tháng trước. Tôi đã có một hạn chế vì tôi cần công cụ để chạy trên iOS và Android. Không tìm thấy bất cứ điều gì phù hợp với tôi thực sự tại thời điểm đó.

Nhưng một vài gợi ý từ những gì tôi nhớ: mỗi hệ thống GUI có một số dạng vẽ API. Vì vậy, bạn có thể tìm thấy một cái gì đó quan tâm trong những nền tảng đa nền tảng như QT .

Tương đương với cairo sẽ là AntiGrain Bạn có thể muốn so sánh hiệu suất.

OpenFrameworks có hỗ trợ đồ họa vector.

Một thư viện rất lớn có hỗ trợ đồ họa vector - và một ngôn ngữ dành riêng cho nó - là ImageMagick .

Cấp thấp hơn bạn sẽ tìm thấy LibxmiLibart từ dự án gnome.

Không phải API cấp cao - và tôi không chắc tỷ lệ cược phù hợp với bạn là bao nhiêu - nhưng có OpenVG tiêu chuẩn . Có nhiều cổng OpenVG trên phần mềm kết xuất OpenGL và OpenGL ES. Mesa 3D dường như cũng có triển khai OpenVG. Nhưng đối với một số nền tảng chỉ có các giải pháp thương mại sẽ có sẵn.

Có nhiều cách các thư viện cấp cao hơn tích hợp API cho đồ họa vector. Trong số này có một mã nguồn mở có tên Clutter cho thiết kế GUI và được sử dụng trong thiết kế trò chơi nghiêm túc, có dạng tỷ lệ (Không phải Nguồn mở). Công cụ trò chơi này có một số chức năng để vẽ đồ họa vector: 2DEngine


EDIT : lộn xộn sử dụng cairo rõ ràng.


3

MonkVG là một mô phỏng OpenVG đa nền tảng trên đỉnh OpenGL ES 1.1 và 2.0. Xem: https://github.com/micahpearlman/MonkVG

Lưu ý: Tôi là tác giả và người duy trì ban đầu của thư viện này. Nó có giấy phép BSD rất tự do.


Đây là một đóng góp tốt cho câu hỏi, nhưng thật đáng lưu ý khi bạn quảng cáo thứ gì đó mà bạn được liên kết (chẳng hạn như tài khoản github của riêng bạn).
Seth Battin

-1

Tôi đã kết thúc không bận tâm và chỉ đi với hình ảnh độ phân giải cao và tỷ lệ với OpenGL. Nó hoạt động đủ tốt cho tình hình của tôi.


4
Bạn đã hỏi về một thư viện nhưng chấp nhận một câu trả lời ở đó, chỉ cần chọn cách khác (bỏ qua thực tế là câu trả lời của bạn). Nó không phải là một đánh giá tốt. (cũng bỏ qua thực tế là có thể mất @Coyoto khoảng 15 phút để viết câu trả lời của mình). Chúc một ngày tốt lành!
Quazi Irfan

1
đây là khoảng 3 năm quá muộn, nhưng một câu trả lời khác đã được gửi gần đây và tôi đã nhận được thông báo, vì vậy cuối cùng tôi đã thấy điều này. Tôi đã đi trước và không chấp nhận của tôi và chấp nhận @ Coyote's. Tôi xin lỗi về điều đó, lúc đó tôi không thực sự hiểu về StackOverflow. muộn còn hơn không, tôi hy vọng - hy vọng nó sẽ giúp những người nhìn thấy câu hỏi trong tương lai.
Zach Hinchy
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.