Existe-t-il une bonne bibliothèque de graphiques vectoriels C ++ multiplateforme? [fermé]

9

Je fais un jeu et je veux utiliser des graphiques vectoriels. J'ai commencé à le recoder en utilisant Cairo et la performance est horrible. Je cherche donc une bibliothèque différente. Il doit être pour C ++ et multiplateforme (par exemple pas de Direct2D). Il y a une autre question que quelqu'un a posée avant comme ça, mais il n'y avait pas de réponses appropriées. Il doit y avoir quelque chose ...?

Zach Hinchy
la source
La "question posée avant", voulez-vous dire gamedev.stackexchange.com/questions/4788/… ?
Tetrad
@Tetrad: La question précédente exclut implicitement la multiplateforme car elle demande explicitement des solutions pour Windows. Et les réponses semblent pointer uniquement vers des solutions liées à Windows.
Coyote
2
@Zach Hinchy: Quand vous dites multiplateforme, vous voulez dire quoi exactement? Windows, Linux, OS X? Ou incluez-vous des plates-formes portables iOS, Brew, Android?
Coyote
2
"Il doit y avoir quelque chose ...?" Pourquoi? Les graphiques vectoriels, en général, ne sont pas quelque chose que les gens qui ont besoin de 30 + fps font. Votre navigateur Web charge-t-il les pages à 30 ips? 10fps est suffisant. Si vous utilisez des graphiques vectoriels, c'est parce que vous privilégiez la qualité à la performance. Et ainsi, les bibliothèques de graphiques vectoriels privilégient la qualité aux performances. Le Caire lui-même n'est pas lent, mais c'est un rendu de graphiques vectoriels de qualité. Et cette qualité signifie qu'elle ne coupe pas les coins pour la performance.
Nicol Bolas
1
@iamcreasy: Il y a une grande différence entre simplement dessiner un quad plus grand / plus petit et une bibliothèque de graphiques vectoriels. Les jeux sont rendus avec le GPU; ils n'utilisent pas de bibliothèque de graphiques vectoriels. Ils n'utilisent pas Cairo ou AntiGrain ou quoi que ce soit de ces natures.
Nicol Bolas

Réponses:

21

Je crains que le sujet soit assez délicat, peu de solutions multi-plateformes semblent avoir été lancées et encore moins semblent avoir survécu par elles-mêmes. Je me suis penché sur le sujet il y a quelques mois. J'avais une contrainte car j'avais besoin que le moteur fonctionne sur iOS et Android. Je n'ai rien trouvé qui me convenait vraiment à l'époque.

Mais quelques indications de ce dont je me souviens: chaque système GUI a une certaine forme d'API de dessin. Donc, vous pourriez trouver quelque chose d'intéressant parmi ceux qui sont multiplates-formes comme QT .

Un équivalent du Caire serait AntiGrain. Vous voudrez peut-être comparer les performances.

OpenFrameworks prend en charge les graphiques vectoriels.

Une très grande bibliothèque qui prend en charge certains graphiques vectoriels - et un langage qui lui est dédié - est ImageMagick .

Au niveau inférieur, vous trouverez Libxmi et Libart du projet gnome.

Pas une API de haut niveau - et je ne sais pas quelles sont les chances qu'elle vous convienne - mais il y a l' OpenVG standard . Il existe plusieurs ports d'OpenVG sur les moteurs de rendu OpenGL et OpenGL ES. Mesa 3D semble également avoir une implémentation OpenVG. Mais pour certaines plateformes, seules des solutions commerciales seront disponibles.

Il existe des bibliothèques de niveau supérieur qui intègrent des API pour les graphiques vectoriels. Parmi ceux-ci, il y a un open source nommé Clutter pour la conception d'interface graphique et utilisé dans la conception de jeux sérieux, il y a une forme d' échelle (pas Open Source). Ce moteur de jeu a quelques fonctions pour dessiner des graphiques vectoriels: 2DEngine


EDIT : l'encombrement utilise apparemment le caire.

Coyote
la source
3

MonkVG est une émulation OpenVG multiplateforme au-dessus d'OpenGL ES 1.1 et 2.0. Voir: https://github.com/micahpearlman/MonkVG

Remarque: je suis l'auteur et le mainteneur d'origine de cette bibliothèque. Il a une licence BSD très libérale.

zerodog
la source
C'est une belle contribution à la question, mais il convient de noter lorsque vous faites la promotion de quelque chose auquel vous êtes affilié (comme votre propre compte Github).
Seth Battin
-1

J'ai fini par ne pas déranger et juste aller avec des images haute résolution et redimensionner avec OpenGL. Cela fonctionne assez bien pour ma situation.

Zach Hinchy
la source
4
Vous avez posé des questions sur une bibliothèque mais avez accepté une réponse là où elle est indiquée, choisissez simplement l'inverse (en ignorant le fait que ce soit la vôtre). Ce n'est pas un bon jugement. (ignorant également le fait qu'il a peut-être fallu @Coyoto environ 15 minutes pour écrire sa réponse). Bonne journée!
Quazi Irfan,
1
c'est environ 3 ans trop tard, mais une autre réponse a été soumise récemment et j'ai reçu la notification, donc j'ai finalement vu cela. Je suis allé de l'avant et j'ai refusé la mienne et j'ai accepté @ Coyote's. Je suis désolé pour ça, je ne comprenais pas vraiment StackOverflow à l'époque. mieux vaut tard que jamais, j'espère - j'espère que cela aidera les gens qui verront la question à l'avenir.
Zach Hinchy