2010-11-14 9 views
7

Mi amigo y yo estamos trabajando en un juego 2D donde los gráficos serán archivos .svg y los escalaremos apropiadamente ya sea rastrándolos primero o renderándolos directamente en una superficie (que aún requeriría rasterización en algún momento).Renderice un gráfico de vector (.svg) en C++

El problema es que he estado buscando todo el día para encontrar una biblioteca que me permita tomar un archivo .svg y eventualmente hacer que se renderice en allegro. Hasta donde yo sé, implicaría rasterización en algún tipo de formato que allegro pueda leer y luego allegro podría renderizar la imagen "aplanada".

¿Cuáles son algunas de las librerías C++ que podría usar para tomar un archivo .SVG y "aplanarlo" para que pueda renderizarlo? Obviamente, la biblioteca también necesita compatibilidad con la escala para que pueda escalar el gráfico vectorial y luego rasterizarlo.

Estoy usando Windows y Visual C++ Express 2010.

Cualquier sugerencia sería muy útil ya que estoy muy perdido en este momento:

He intentado Cairo, pero sólo permite la escritura de .svg archivos y no le permite leer el archivo .svg. También busqué en librsvg, que funciona con Cario, pero estaba teniendo muchos problemas para hacerlo funcionar correctamente en Windows (porque tiene muchas dependencias de GNOME). Si tienes alguna guía para hacer que funcionen (en Windows), eso también sería genial.

Respuesta

7

El wxsvg library permite cargar y manipular archivos SVG. Qt también tiene un SVG module.

+0

wxSVG se ve perfecto porque tengo experiencia con wxWidgets. Aunque no tengo ni idea de cómo compilar en Windows, finalmente lo resolveré. Gracias :) – Brad

3

SVG++ library proporciona soporte avanzado para la lectura de SVG, por lo que la reproducción de SVG con allegro se puede implementar en un tiempo razonable.

1

recientemente he reunido una pequeña biblioteca SVG renderer en C++: https://github.com/igagis/svgren

Utiliza Cairo para la representación de superficie fuera de la pantalla. Admite gradientes y todo tipo de formas.

+0

¿Has usado esta biblioteca para renderizar texto? Estoy teniendo problemas con el texto. –

+0

@SubhamoySengupta envíe un problema a https://github.com/igagis/svgren/issues si tiene algún problema con la biblioteca – igagis

+0

. Enviaría un problema si encuentro un error. Dado que parece que el texto no es compatible en absoluto, no estoy seguro de si sería un problema. De ahí la pregunta. –

1

Llego un poco tarde a la conversación, pero le sugiero que mire Nano SVG, un renderizador de svg extremadamente liviano que no necesita cairo/libsvg. Tengo nanosvg compilado y trabajando en un par de horas. Es muy básico, pero hace el trabajo bien.