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ś ...?
9
Odpowiedzi:
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.
źródło
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.
źródło
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.
źródło