Estou fazendo um jogo e quero usar gráficos vetoriais. Comecei a recodificá-lo usando o Cairo e o desempenho é horrível. Então, estou procurando uma biblioteca diferente. Precisa ser para C ++ e multiplataforma (por exemplo, sem Direct2D). Há outra pergunta que alguém fez antes dessa maneira, mas não houve respostas adequadas. Tem que haver algo ...?
9
Respostas:
Receio que o assunto seja bastante complicado, poucas soluções multiplataforma parecem ter sido lançadas e menos ainda parecem ter sobrevivido por conta própria. Eu estava analisando o assunto há alguns meses atrás. Eu tinha uma restrição, pois precisava que o mecanismo fosse executado no iOS e Android. Não encontrei nada que realmente me convinha na época.
Mas algumas dicas do que me lembro: cada sistema GUI tem alguma forma de desenhar API. Portanto, você pode encontrar algo de interesse naqueles que são multiplataforma, como o QT .
Um equivalente a cairo seria o AntiGrain. Você pode comparar o desempenho.
O OpenFrameworks tem suporte para gráficos vetoriais.
Uma biblioteca muito grande que possui algum suporte a gráficos vetoriais - e um idioma dedicado a ela - é o ImageMagick .
No nível inferior, você encontrará Libxmi e Libart no projeto gnome.
Não é uma API de alto nível - e não tenho certeza de quais são as probabilidades que servirão para você -, mas existe o OpenVG padrão . Existem várias portas do OpenVG sobre os renderizadores OpenGL e OpenGL ES. O Mesa 3D também parece ter uma implementação OpenVG. Mas, para algumas plataformas, apenas soluções comerciais estarão disponíveis.
Existem bibliotecas de nível superior que integram APIs para gráficos vetoriais. Entre eles, existe um de código aberto chamado Clutter para design de GUI e, usado no design de jogos sérios, existe um scaleform (Not Open Source). Este mecanismo de jogo possui algumas funções para desenhar gráficos vetoriais: 2DEngine
EDIT : desordem usa cairo aparentemente.
fonte
O MonkVG é uma emulação OpenVG de plataforma cruzada sobre o OpenGL ES 1.1 e 2.0. Consulte: https://github.com/micahpearlman/MonkVG
Nota: Eu sou o autor original e mantenedor desta biblioteca. Tem uma licença BSD muito liberal.
fonte
Acabei não me incomodando e apenas usando imagens de alta resolução e dimensionando com o OpenGL. Funciona bem o suficiente para a minha situação.
fonte