Esiste una buona libreria di grafica vettoriale C ++ multipiattaforma? [chiuso]


9

Sto realizzando un gioco e voglio usare la grafica vettoriale. Ho iniziato a ricodificarlo usando Cairo e la performance è orribile. Quindi, sto cercando una biblioteca diversa. Deve essere per C ++ e multipiattaforma (ad es. Senza Direct2D). C'è un'altra domanda che qualcuno ha posto prima in questo modo, ma non c'erano risposte adeguate. Deve esserci qualcosa ...?


La "domanda posta prima", intendi gamedev.stackexchange.com/questions/4788/… ?
Tetrad,

@Tetrad: la domanda precedente esclude implicitamente la multipiattaforma poiché richiede esplicitamente soluzioni per Windows. E le risposte sembrano indicare solo soluzioni relative a Windows.
Coyote,

2
@Zach Hinchy: quando dici cross platform intendi esattamente cosa? Windows, Linux, OS X? O includi piattaforme portatili iOS, Brew, Android?
Coyote,

2
"Deve esserci qualcosa ...?" Perché? La grafica vettoriale, in generale, non è qualcosa che fanno le persone che hanno bisogno di 30+ fps. Il tuo browser carica pagine a 30fps? No. 10 fps è abbondante. Se si utilizza la grafica vettoriale, è perché si valore qualità sulle prestazioni. Pertanto, le librerie di grafica vettoriale apprezzano la qualità rispetto alle prestazioni. Il Cairo in sé non è lento, ma è un renderizzatore di grafica vettoriale di qualità. E quella qualità significa che non taglia gli angoli per le prestazioni.
Nicol Bolas,

1
@iamcreasy: c'è una grande differenza tra il semplice disegno di una libreria grafica più grande / piccola e una grafica vettoriale. Il rendering dei giochi con la GPU; non usano una libreria di grafica vettoriale. Non usano Cairo o AntiGrain o qualcosa del genere.
Nicol Bolas,

Risposte:


21

Temo che l'argomento sia piuttosto complicato, poche soluzioni multipiattaforma sembrano essere state lanciate e ancor meno sembrano sopravvivere da sole. Stavo esaminando l'argomento qualche mese fa. Avevo un vincolo perché avevo bisogno del motore per funzionare su iOS e Android. Non ho trovato nulla adatto a me in quel momento.

Ma alcuni suggerimenti da quello che ricordo: ogni sistema GUI ha una qualche forma di API di disegno. Quindi potresti trovare qualcosa di interessante tra quelli che sono multipiattaforma come QT .

Un equivalente di Cairo sarebbe AntiGrain. Potresti voler confrontare le prestazioni.

OpenFrameworks ha il supporto per la grafica vettoriale.

Una libreria molto grande che ha un supporto per la grafica vettoriale - e un linguaggio ad essa dedicato - è ImageMagick .

Al livello inferiore troverai Libxmi e Libart dal progetto gnome.

Non un'API di alto livello - e non sono sicuro di quali siano le probabilità che ti si adattino - ma esiste OpenVG standard . Esistono più porte di OpenVG sul software OpenGL e OpenGL ES renderer. Anche Mesa 3D sembra avere un'implementazione OpenVG. Ma per alcune piattaforme saranno disponibili solo soluzioni commerciali.

Esistono librerie di livello superiore che integrano le API per la grafica vettoriale. Tra questi ce n'è uno open source chiamato Clutter per la progettazione della GUI e usato nella progettazione di giochi seri c'è scaleform (Not Open Source). Questo motore di gioco ha alcune funzioni per disegnare grafica vettoriale: 2DEngine


EDIT : apparentemente il disordine usa cairo.


3

MonkVG è un'emulazione OpenVG multipiattaforma su OpenGL ES 1.1 e 2.0. Vedi: https://github.com/micahpearlman/MonkVG

Nota: sono l'autore originale e manutentore di questa libreria. Ha una licenza BSD molto liberale.


Questo è un ottimo contributo alla domanda, ma è opportuno notare quando stai promuovendo qualcosa con cui sei affiliato (come il tuo account github).
Seth Battin,

-1

Ho finito per non infastidire e semplicemente andare con immagini ad alta risoluzione e ridimensionamento con OpenGL. Funziona abbastanza bene per la mia situazione.


4
Hai chiesto informazioni su una biblioteca ma hai accettato una risposta dove dice, basta fare il contrario (ignorando il fatto che è la tua risposta). Non è un buon giudizio. (ignorando anche il fatto che forse @Coyoto ha impiegato circa 15 minuti per scrivere la sua risposta). Buona giornata!
Quazi Irfan,

1
sono in ritardo di circa 3 anni, ma recentemente è stata inviata un'altra risposta e ho ricevuto la notifica, quindi finalmente ho visto questo. Sono andato avanti e ho accettato il mio e ho accettato @ Coyote's. Mi dispiace per quello, allora non capivo molto StackOverflow. meglio tardi che mai, spero - spero che possa aiutare le persone a vedere la domanda in futuro.
Zach Hinchy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.