Libreria per caricare immagini in trame, Linux, C e OpenGl


9

Sto cercando una libreria C semplice e autonoma per Linux per caricare immagini da file in trame OpenGL. La licenza dovrebbe essere abbastanza liberale: zlib, bsd, mit o qualcosa del genere. Ho trovato il SUOLO , tuttavia non è stato aggiornato da molto tempo. C'è qualcos'altro o devo scrivere il mio?

PS Uso glfw. Esistono solo funzioni obsolete per il caricamento delle immagini.

Risposte:


5

Uso STB Image per la maggior parte del caricamento delle immagini. Un piccolo self non conteneva stringhe collegate all'implementazione di png e altri formati di file.


3
SOIL è un involucro leggero attorno a stb_image.

Ah, non ne ero a conoscenza.
Annullato il

11

Il SUOLO funziona alla grande. Chi se ne frega se non è stato aggiornato da "molto tempo"? Ciò significa solo che è stabile e ben compreso.

(In realtà è stato aggiornato nel 2008, che non è molto tempo fa.)


Per coloro che lo vedono ora - SOIL non sembra funzionare su iOS, quindi se la portabilità è il tuo obiettivo, usare direttamente stb_image potrebbe essere un'opzione migliore.
Ed Ropple,

2

Dai un'occhiata a DevIL .


DevIL è sotto LGPL. Questo è un po 'troppo restrittivo per me.
Michas,

1
Tieni presente che finché non modifichi il codice sorgente originale, puoi collegarti a una libreria LGPL e mantenere il tuo codice principale chiuso / privato / utilizzato per scopi commerciali.
r2d2rigo,

1
Lo so. Tuttavia, voglio collegare tutto in un unico file.
Michas,

2

Dai un'occhiata a FreeImage . Ha una doppia licenza, puoi scegliere GPL o la licenza FreeImage liberale. Supporta molti più formati di immagine rispetto al SUOLO e lo sviluppo è attivo.

La libreria stessa è scritta in C ++, ma ha un'interfaccia ANSI C.

Dalla sua introduzione:

Grazie alla sua interfaccia ANSI C, FreeImage è utilizzabile in molte lingue tra cui C, C ++, VB, C #, Delphi, Java e anche in linguaggi di scripting comuni come Perl, Python, PHP, TCL o Ruby.


Sembra che la licenza non sia abbastanza liberale.
Michas,

@Michas Tutto ciò che ti serve è riconoscere l'uso della biblioteca, altrimenti sei libero di modificare le fonti e l'uso in progetti commerciali. O forse non ho letto la licenza abbastanza attentamente?
Oskar N.

Potrei essere costretto a pubblicare parte del codice sorgente.
Michas,

Non sono sicuro di dove ti sia venuta questa idea ... in realtà modificherai la libreria di FreeImage (suggerimento: probabilmente no; sii onesto con te stesso)?
ChrisE,

Non è un requisito pratico. Lo so. Sarei solo più felice con una licenza più liberale.
Michas

0

Silly è prodotto dai ragazzi del CEGUI .

Supporta il caricamento di PNG, TGA, JPG, ecc. Ed è rilasciato con una licenza MIT.

Dovresti scrivere tu un wrapper C mentre la libreria è scritta in C ++.


Il problema è che voglio compilare tutto con un compilatore C.
Michas,

0

Se non hai bisogno di leggere molti formati, considera di scrivere il tuo codice caricatore. Uso direttamente libjpeg e libpng e sono abbastanza facili da usare. Entrambi hanno funzioni molto semplici che essenzialmente recuperano una scanline di dati RGBA, li inseriscono in un array e poi li caricano su OpenGL. Entrambi hanno programmi di esempio molto utili e semplici.

Non ho esperienza con altri formati, però. Ma ad essere sinceri, PNG + JPEG copre il 100% delle nostre esigenze (che non sono banali né di livello hobbistico - vedi http://www.mysterystudio.com )

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.