Biblioteca para cargar imágenes en texturas, Linux, C y OpenGl

9

Estoy buscando una biblioteca C simple y autónoma para Linux para cargar imágenes de archivos en texturas OpenGL. La licencia debe ser bastante liberal: zlib, bsd, mit o algo así. He encontrado SOIL , sin embargo, no se ha actualizado durante mucho tiempo. ¿Hay algo más o tengo que escribir el mío?

PD: uso glfw. Solo hay funciones obsoletas para cargar imágenes.

revs Michas
fuente

Respuestas:

5

Yo uso STB Image para la mayoría de la carga de imágenes. Una pequeña implementación autónoma sin condiciones adjuntas de png y otros formatos de archivo.

nulo
fuente
3
SOIL es una envoltura ligera alrededor de stb_image.
Ah, no estaba al tanto de eso.
nulo
11

El suelo funciona muy bien. ¿A quién le importa si no se ha actualizado en un "largo tiempo"? Eso solo significa que es estable y bien entendido.

(En realidad, se actualizó en 2008, que no hace mucho tiempo).

usuario744
fuente
Para aquellos que ven esto ahora, SOIL no parece funcionar en iOS, por lo que si su objetivo es la portabilidad, usar stb_image directamente puede ser una mejor opción.
Ed Ropple el
2

Echa un vistazo a DevIL .

r2d2rigo
fuente
DevIL está bajo LGPL. Esto es demasiado restrictivo para mí.
Michas
1
Tenga en cuenta que siempre que no modifique el código fuente original, puede vincular a una biblioteca LGPL y mantener su código principal cerrado / privado / utilizado con fines comerciales.
r2d2rigo
1
Lo sé. Sin embargo, quiero vincular todo en un solo archivo.
Michas
2

Echa un vistazo a FreeImage . Tiene doble licencia, puede elegir GPL o la licencia liberal de FreeImage. Admite muchos más formatos de imagen que SOIL y el desarrollo está activo.

La biblioteca en sí está escrita en C ++, pero tiene una interfaz ANSI C.

Desde su introducción:

Gracias a su interfaz ANSI C, FreeImage se puede utilizar en muchos idiomas, incluidos C, C ++, VB, C #, Delphi, Java y también en lenguajes de secuencias de comandos comunes como Perl, Python, PHP, TCL o Ruby.

Oskar N.
fuente
Parece que la licencia no es lo suficientemente liberal.
Michas
@Michas Todo lo que necesita es reconocer el uso de la biblioteca, de lo contrario, es libre de modificar las fuentes y el uso en proyectos comerciales. ¿O tal vez no leí la licencia con suficiente cuidado?
Oskar N.
Me pueden obligar a publicar parte del código fuente.
Michas
No estoy seguro de dónde está obteniendo esa idea ... ¿realmente va a modificar la biblioteca FreeImage (pista: probablemente no; sea honesto consigo mismo)?
ChrisE
No es un requisito práctico. Lo sé. Simplemente sería más feliz con una licencia más liberal.
Michas
0

Silly es producido por los chicos de CEGUI .

Admite cargar PNG, TGA, JPG, etc. Y se lanza con una licencia MIT.

Tendría que escribir un contenedor de C usted mismo ya que la biblioteca está escrita en C ++.

código_deft
fuente
El problema es que quiero compilar todo con un compilador de C.
Michas
0

Si no necesita leer muchos formatos, considere escribir su propio código de cargador. Uso libjpeg y libpng directamente y son bastante fáciles de usar. Ambos tienen funciones muy simples que esencialmente obtienen una línea de escaneo de datos RGBA, simplemente coloque eso en una matriz y luego cárguelo a OpenGL. Ambos tienen programas de ejemplo muy útiles y directos.

Sin embargo, no tengo experiencia con otros formatos. Pero, para ser sincero, PNG + JPEG cubre el 100% de nuestras necesidades (que no son triviales ni de nivel aficionado; consulte http://www.mysterystudio.com )

ggambett
fuente