Uma boa pergunta Eu estava experimentando isso em um ponto - não consegui encontrar uma solução fácil e pré-criada. Mas deixe-me apontar alguns dos recursos que encontrei ao tentar implementá-lo pessoalmente:
Antes de tudo, há um artigo da GPU Gems 3: Rendering Vector Art na GPU (e no artigo Loop-Blinn associado ).
A parte mais difícil é que, embora desenhar curvas quadráticas seja fácil, as curvas cúbicas (como as encontradas no SVG típico) são consideravelmente mais difíceis. O artigo entra em detalhes sobre isso, mas você precisará trazer seu chapéu de matemática.
A alternativa para renderizar curvas cúbicas é converter as curvas cúbicas em quadráticas. Também é um problema não trivial.
Depois de renderizar curvas de vetor na GPU, é simples analisar o SVG no pipeline de conteúdo e transformá-lo em uma malha que você pode renderizar. Analisar SVG é fácil , a propósito.
Outra alternativa potencialmente mais fácil é abrir mão de curvas e simplesmente triangular uma aproximação linear do seu SVG.
Ambas as soluções requerem triangulação - eis um triangulador razoável adequado ao XNA .
Como uma alternativa completamente diferente, você pode usar um "campo de distância" para renderizar sprites com bordas afiadas semelhantes a vetores.
Aqui está um documento da Valve da SIGGRAPH 2007 sobre como fazer isso: Maior ampliação testada em alfa para texturas de vetores e efeitos especiais (PDF)
O método básico aqui é muito fácil de implementar. A dificuldade surge ao tentar fazer com que ele suporte cantos afiados (algo que apenas foi mencionado no papel). Esse método também possui algumas limitações bastante severas para qualquer coisa, exceto desenhar formas simples. É mais adequado ao texto e decalques da interface do usuário (como a Valve está usando).
Agora que eu disse tudo isso - tenho que dizer que, na minha experiência, todo o esforço aqui não vale a pena!
A menos que sua jogabilidade se baseie principalmente em efeitos extremos de zoom vetorial, como a muito legal demo Masagin , você pode fazer uma pré-renderização de seu SVG e simplesmente usar técnicas de bitmap (mais fácil, melhor suportado etc.).
(Uma das primeiras técnicas que vem à mente é a versão mipmapping ( wiki ) de alta resolução de seus sprites, para garantir independência de resolução até o tamanho máximo do sprite.)
Esta postagem no blog é provavelmente um bom lugar para começar a adicionar suporte de renderização SVG ao seu pipeline de conteúdo XNA.