windows - Render en vektor grafik (.svg) i C ++

Indlæg af Hanne Mølgaard Plasc

Problem



Min og en ven arbejder på et 2D-spil, hvor grafikken vil være .svg-filer, og vi skalere dem passende enten ved at rasterisere dem først eller gøre dem direkte på en overflade (hvilket stadig ville kræve rasterisering på et tidspunkt).


Problemet er, at jeg har set hele dagen for at finde et bibliotek, der vil tillade mig at tage en .svg-fil og til sidst få den til at gengives i allegro. Så vidt jeg ved, ville det indebære rasterisering i en form for format, som allegro kan læse og derefter allegro kunne gøre det 'fladede' billede.


Så hvad er nogle C + + biblioteker jeg kunne bruge til at tage en .SVG-fil og 'fladdere' det, så jeg kan gøre det? Biblioteket skal selvfølgelig også understøtte skalering, så jeg kan skala vektorgrafikken og rasterisere den.


Jeg bruger Windows og Visual C ++ Express 2010.


Eventuelle forslag ville være nyttige, da jeg er meget tabt lige nu:


Jeg har prøvet Cairo, men det tillader kun at skrive .svg-filer og gør det ikke muligt at læse .svg-filen. Jeg har også kigget på librsvg, der fungerer sammen med Cario, men jeg havde svært ved at få det til at fungere korrekt på Windows (fordi det har masser af GNOME afhængigheder). Hvis du har vejledninger til at få disse til at fungere (på Windows ) det ville også være godt.

Bedste reference


Wxsvg-biblioteket tillader indlæsning og manipulation af SVG-filer. Qt har også et SVG-modul. [1] [2]

Andre referencer 1


SVG ++-biblioteket giver avanceret support til SVG-læsning, således at gengivelsen af ​​SVG med allegro kan implementeres i rimelig tid. [3]

Andre referencer 2


Jeg kommer lidt sent til samtalen, men jeg vil foreslå dig at se på Nano SVG, en ekstremt let svg renderer, der ikke behøver cairo/libsvg. Jeg fik nanosvg udarbejdet og arbejdet om et par timer. Det er meget grundlæggende, men det får jobbet gjort. [4]

Andre referencer 3


Jeg har for nylig sammensat et lille SVG renderer bibliotek i C ++:
https://github.com/igagis/svgren[5]


Det bruger Cairo til at gengive til off-screen overflade.
Understøtter gradienter og alle slags former.