Bibliothèque pour charger des images dans des textures, Linux, C et OpenGl

9

Je recherche une bibliothèque C simple et autonome pour Linux pour charger des images de fichiers dans des textures OpenGL. La licence devrait être assez libérale: zlib, bsd, mit ou quelque chose. J'ai trouvé du SOL , mais il n'a pas été mis à jour depuis longtemps. Y a-t-il autre chose ou dois-je écrire le mien?

PS J'utilise glfw. Il n'y a que des fonctions obsolètes pour charger des images.

Michas
la source

Réponses:

5

J'utilise STB Image pour la plupart des chargements d'images. Une petite mise en œuvre autonome sans aucune condition n'est attachée au format png et à d'autres formats de fichier.

nul
la source
3
SOIL est une enveloppe légère autour de stb_image.
Ah, je n'étais pas au courant de ça.
annulé le
11

Le sol fonctionne très bien. Qui se soucie si elle n'a pas été mise à jour depuis "longtemps"? Cela signifie simplement qu'il est stable et bien compris.

(Il a en fait été mis à jour en 2008, ce qui n'est pas du tout récent.)

user744
la source
Pour ceux qui le voient maintenant - SOIL ne semble pas fonctionner sur iOS, donc si la portabilité est votre objectif, utiliser directement stb_image peut être une meilleure option.
Ed Ropple
2

Jetez un oeil à DevIL .

r2d2rigo
la source
DevIL est sous LGPL. C'est un peu trop restrictif pour moi.
Michas
1
Gardez à l'esprit que tant que vous ne modifiez pas le code source d'origine, vous pouvez créer un lien vers une bibliothèque LGPL et garder votre code principal fermé / privé / utilisé à des fins commerciales.
r2d2rigo
1
Je connais. Cependant, je veux tout lier en un seul fichier.
Michas
2

Découvrez FreeImage . C'est une double licence, vous pouvez choisir soit la GPL soit la licence libérale FreeImage. Il prend en charge bien plus de formats d'image que SOIL et le développement est actif.

La bibliothèque elle-même est écrite en C ++, mais elle a une interface C ANSI.

Dès son introduction:

Grâce à son interface ANSI C, FreeImage est utilisable dans de nombreux langages dont C, C ++, VB, C #, Delphi, Java et également dans les langages de script courants tels que Perl, Python, PHP, TCL ou Ruby.

Oskar N.
la source
Il semble que la licence ne soit pas assez libérale.
Michas
@Michas Il vous suffit de reconnaître l'utilisation de la bibliothèque, sinon vous êtes libre de modifier les sources et de l'utiliser dans des projets commerciaux. Ou peut-être que je n'ai pas lu la licence assez attentivement?
Oskar N.
Je peux être forcé de publier une partie du code source.
Michas
Je ne sais pas d'où vous venez cette idée ... allez-vous réellement modifier la bibliothèque FreeImage (indice: probablement pas; soyez honnête avec vous-même)?
ChrisE
Ce n'est pas une exigence pratique. Je connais. Je serais simplement plus heureux avec une licence plus libérale.
Michas
0

Silly est produit par les gars de CEGUI .

Je supporte le chargement de PNG, TGA, JPG, etc. Et il est publié avec une licence MIT.

Vous devez écrire vous-même un wrapper C car la bibliothèque est écrite en C ++.

deft_code
la source
Le problème est que je veux tout compiler avec un compilateur C.
Michas
0

Si vous n'avez pas besoin de lire de nombreux formats, pensez à écrire votre propre code de chargeur. J'utilise directement libjpeg et libpng et ils sont assez faciles à utiliser. Les deux ont des fonctions très simples qui récupèrent essentiellement une ligne de balayage des données RGBA, il suffit de les mettre dans un tableau puis de les télécharger sur OpenGL. Les deux ont des exemples de programmes très utiles et simples.

Je n'ai cependant aucune expérience avec d'autres formats. Mais pour être honnête, PNG + JPEG couvrent 100% de nos besoins (qui ne sont ni triviaux ni amateurs) - voir http://www.mysterystudio.com )

ggambett
la source