J'étudie actuellement la possibilité de rendre des graphiques vectoriels à partir d'un fichier SVG en utilisant OpenGL et OpenGL ES. J'ai l'intention de cibler Windows et Android. Ma solution idéale serait d'avoir une bibliothèque C minimale qui génère une triangulation polygonale à partir d'un fichier SVG donné. Cela générerait ensuite des appels OpenGL ou OpenGL ES standard, et utiliserait une liste d'affichage ou un vbo pour l'optimisation lors du redessin. J'utiliserais simplement une liste d'affichage pour dessiner l'image vectorielle après la translation et la rotation, ce qui me permettrait de mélanger cela avec d'autres appels OpenGL.
Jusqu'à présent, je vois que les suggestions sont d'utiliser d'abord QT ou Cairo. - Ce n'est pas une option étant donné que je souhaite gérer mon propre contexte OpenGL sans bibliothèques gonflées (dans le contexte de ce que j'essaie d'accomplir). Ce n'est pas non plus adapté à Android.
La deuxième option consiste à utiliser des bibliothèques qui effectuent un rendu sur une texture. Si cela peut convenir pour des graphiques vectoriels statiques, ce n'est pas une option efficace ou réalisable pour les jeux où les mises à l'échelle et les rotations sont fréquentes.
Troisièmement, il y a la possibilité d'utiliser OpenVG. Il y a quelques implémentations opensource de la spécification OpenVG (ShivaVG etc), mais je n'ai pas encore trouvé de bibliothèque capable de générer les appels OpenVG appropriés à partir d'un fichier SVG donné au moment de l'exécution, et je ne vois pas comment optimiser cela comme on pourrait le faire avec une liste d'affichage ou un vbo.
Ces trois méthodes présentent des limites. Je pense que l'option la plus prometteuse est d'utiliser une implémentation OpenVG si aucune autre solution n'existe. Ma question est donc la suivante : existe-t-il des bibliothèques qui font ce que je veux, ou qui s'en rapprochent ? Si ce n'est pas le cas, y a-t-il une bonne raison de ne pas le faire ? Et serait-il préférable d'essayer de le faire à partir de zéro ?