2010-11-14 21 views
7

Moja i moja przyjaciółka pracują nad grą 2D, w której grafika będzie plikami w formacie .svg, a następnie przeskalujemy je odpowiednio, rasteryzując je lub renderując bezpośrednio na powierzchni (które nadal wymagałoby rasteryzacji w pewnym momencie).Renderuj grafikę wektorową (.svg) w języku C++

Problem polega na tym, że przez cały dzień szukałem biblioteki, która pozwoli mi pobrać plik .svg i ostatecznie uzyskać go do renderowania w allegro. O ile mi wiadomo, wymagałoby to rasteryzacji w formacie, który może czytać allegro, a następnie allegro może renderować "spłaszczony" obraz.

Więc jakie są niektóre biblioteki C++, których mógłbym użyć do zrobienia pliku .SVG i "spłaszczenia" go, aby móc go renderować? Biblioteka oczywiście musi obsługiwać skalowanie, więc mogę skalować grafikę wektorową, a następnie rasteryzować ją.

Używam systemu Windows i Visual C++ Express, 2010.

Wszelkie sugestie byłoby pomocne jak ja bardzo stracił teraz:

próbowałam Cairo, ale pozwala tylko pisanie .svg plików i nie pozwala na odczytanie pliku .svg. Zajrzałem również do librsvg, które współpracuje z Cario, ale miałem dużo problemów z poprawnym działaniem Windowsa (ponieważ ma on wiele zależności GNOME). Jeśli masz jakieś wskazówki, jak je uruchomić (w Windows), to byłoby też świetne.

Odpowiedz

7

Urządzenie wxsvg library umożliwia ładowanie i manipulowanie plikami SVG. Qt ma także SVG module.

+0

wxSVG wygląda idealnie, ponieważ mam doświadczenie z wxWidgets. Chociaż nie mam absolutnie pojęcia, jak skompilować w systemie Windows, w końcu to rozgryzę. Dzięki :) – Brad

3

SVG++ library zapewnia zaawansowaną obsługę odczytu SVG, dzięki czemu renderowanie SVG z allegro może być realizowane w rozsądnym czasie.

1

Niedawno ułożyła małą bibliotekę SVG renderujący w C++: https://github.com/igagis/svgren

Wykorzystuje Cairo do renderowania na powierzchni poza ekranem. Obsługuje gradienty i wszelkiego rodzaju kształty.

+0

Użyłeś tej biblioteki do renderowania tekstu? Mam problemy z tekstem. –

+0

@SubhamoySengupta proszę przesłać problem do https://github.com/igagis/svgren/issues, jeśli masz jakiekolwiek problemy z biblioteką – igagis

+0

Zgłosiłbym problem, jeśli znalazłem błąd. Ponieważ wygląda na to, że tekst nie jest obsługiwany w ogóle, nie jestem pewien, czy byłby to problem. Stąd pytanie. –

1

Trochę spóźniam się na rozmowę, ale proponuję, abyś spojrzał na Nano SVG, niezwykle lekki renderer svg, który nie potrzebuje cairo/libsvg. Mam nanosvg skompilowany i działający w ciągu kilku godzin. Jest to bardzo proste, ale wykonuje swoją pracę.