Czy istnieje dobra wieloplatformowa biblioteka grafiki wektorowej C ++? [Zamknięte]


9

Tworzę grę i chcę korzystać z grafiki wektorowej. Zacząłem przekodowywać go za pomocą Kairu, a wydajność jest przerażająca. Więc szukam innej biblioteki. Musi być dla C ++ i dla wielu platform (np. Bez Direct2D). Jest takie pytanie, które ktoś wcześniej zadał, ale nie było odpowiednich odpowiedzi. Musi być coś ...?


„Pytanie zadane wcześniej”, czy masz na myśli gamedev.stackexchange.com/questions/4788/... ?
Tetrad

@Tetrad: Poprzednie pytanie domyślnie wyklucza wiele platform, ponieważ wyraźnie domaga się rozwiązań dla systemu Windows. A odpowiedzi wydają się wskazywać tylko na rozwiązania związane z Windows.
Coyote

2
@Zach Hinchy: Kiedy mówisz na wiele platform, masz na myśli, co dokładnie? Windows, Linux, OS X? A może masz przenośne platformy iOS, Brew, Android?
Coyote

2
„Musi być coś…?” Dlaczego? Grafika wektorowa w ogóle nie jest czymś, co robią ludzie, którzy potrzebują 30 + fps. Czy Twoja przeglądarka ładuje strony przy 30 klatkach na sekundę? Nie. 10 fps to dużo. Jeśli używasz grafiki wektorowej, to dlatego, że cenisz jakość nad wydajnością. W ten sposób biblioteki grafiki wektorowej cenią jakość nad wydajnością. Sam Kair nie jest wolny, ale jest wysokiej jakości renderowaniem grafiki wektorowej. A ta jakość oznacza, że ​​nie ogranicza to wydajności.
Nicol Bolas,

1
@iamcreasy: Istnieje duża różnica między rysowaniem kwadratu większego / mniejszego a biblioteką grafiki wektorowej. Renderowanie gier z GPU; nie używają biblioteki grafiki wektorowej. Nie używają Kairu, AntiGrain ani niczego z tych natur.
Nicol Bolas,

Odpowiedzi:


21

Obawiam się, że temat jest dość trudny, wydaje się, że uruchomiono kilka rozwiązań wieloplatformowych, a jeszcze mniej przetrwało samodzielnie. Kilka miesięcy temu przyglądałem się temu tematowi. Miałem ograniczenie, ponieważ potrzebowałem silnika do pracy na iOS i Androidzie. W tym czasie nie znalazłem niczego, co by mi pasowało.

Ale kilka wskazówek z tego, co pamiętam: każdy system GUI ma jakąś formę rysowania API. Więc możesz znaleźć coś interesującego w tych, które są wieloplatformowe, takie jak QT .

Odpowiednikiem Cairo byłby AntiGrain. Możesz porównać wydajność.

OpenFrameworks obsługuje grafikę wektorową.

Bardzo dużą biblioteką, która ma wsparcie dla grafiki wektorowej - i dedykowany jej język - jest ImageMagick .

Niższy poziom znajdziesz Libxmi i Libart z projektu gnome.

Nie jest to interfejs API wysokiego poziomu - i nie jestem pewien, jakie są szanse, że ci się spodoba - ale istnieje standardowy OpenVG . Istnieje wiele portów OpenVG nad programami renderującymi OpenGL i OpenGL ES. Wydaje się, że Mesa 3D ma także implementację OpenVG. Ale w przypadku niektórych platform dostępne będą tylko rozwiązania komercyjne.

Istnieje wiele bibliotek wyższego poziomu, które integrują interfejsy API do grafiki wektorowej. Wśród nich znajduje się open source o nazwie Clutter do projektowania GUI, a przy poważnym projektowaniu gier istnieje format (Not Open Source). Ten silnik gry ma kilka funkcji do rysowania grafiki wektorowej: 2DEngine


EDYCJA : bałagan najwyraźniej używa Cairo.


3

MonkVG to wieloplatformowa emulacja OpenVG oparta na OpenGL ES 1.1 i 2.0. Zobacz: https://github.com/micahpearlman/MonkVG

Uwaga: Jestem oryginalnym autorem i opiekunem tej biblioteki. Ma bardzo liberalną licencję BSD.


Jest to świetny wkład w to pytanie, ale należy pamiętać, gdy promujesz coś, z czym jesteś powiązany (np. Własne konto github).
Seth Battin

-1

Skończyło się na tym, że nie zawracałem sobie głowy i po prostu korzystałem z obrazów w wysokiej rozdzielczości i skalowałem z OpenGL. Działa wystarczająco dobrze w mojej sytuacji.


4
Zapytałeś o bibliotekę, ale zaakceptowałeś odpowiedź tam, gdzie jest napisane, po prostu odwróć (ignorując fakt, że twoja odpowiedź). To nie jest dobry osąd. (ignorując również fakt, że napisanie odpowiedzi może zająć @Coyoto około 15 minut). Miłego dnia!
Quazi Irfan,

1
to około 3 lata za późno, ale niedawno otrzymano inną odpowiedź i otrzymałem powiadomienie, więc w końcu to zobaczyłem. Poszedłem dalej i nie zaakceptowałem mojego i zaakceptowałem @ Coyote's. Przykro mi z tego powodu, tak naprawdę nie do końca rozumiałem StackOverflow. mam nadzieję, że lepiej późno niż wcale - mam nadzieję, że pomoże to ludziom, którzy zobaczą to pytanie w przyszłości.
Zach Hinchy
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.