Bibliothek zum Laden von Bildern in Texturen, Linux, C und OpenGl


9

Ich suche nach einer einfachen, in sich geschlossenen C-Bibliothek für Linux, um Bilder aus Dateien in OpenGL-Texturen zu laden. Die Lizenz sollte ziemlich liberal sein: zlib, bsd, mit oder so. Ich habe SOIL gefunden , es wurde jedoch schon lange nicht mehr aktualisiert. Gibt es noch etwas oder muss ich mein eigenes schreiben?

PS Ich benutze glfw. Es gibt nur veraltete Funktionen zum Laden von Bildern.

Antworten:


5

Ich verwende STB Image zum Laden der meisten Bilder. Ein kleines Self enthielt keine an Bedingungen geknüpften Implementierungen von PNG und anderen Dateiformaten.


3
SOIL ist eine leichte Hülle um stb_image.

Ah, das war mir nicht bewusst.
nichtig

11

SOIL funktioniert super . Wen interessiert es, wenn es seit "langer Zeit" nicht mehr aktualisiert wurde? Das bedeutet nur, dass es stabil und gut verstanden ist.

(Es wurde tatsächlich im Jahr 2008 aktualisiert, was noch nicht lange her ist.)


Für diejenigen, die dies jetzt sehen - SOIL scheint unter iOS nicht zu funktionieren. Wenn also Portabilität Ihr Ziel ist, ist die direkte Verwendung von stb_image möglicherweise die bessere Option.
Ed Ropple

2

Schau dir DevIL an .


DevIL steht unter LGPL. Das ist mir wenig zu restriktiv.
Michas

1
Beachten Sie, dass Sie, solange Sie den ursprünglichen Quellcode nicht ändern, eine Verknüpfung zu einer LGPL-Bibliothek herstellen und Ihren Hauptcode geschlossen / privat / für kommerzielle Zwecke verwenden können.
r2d2rigo

1
Ich kenne. Ich möchte jedoch alles in einer einzigen Datei verknüpfen.
Michas

2

Schauen Sie sich FreeImage an . Es ist doppelt lizenziert. Sie können entweder die GPL oder die liberale FreeImage-Lizenz wählen. Es unterstützt weit mehr Bildformate als SOIL und die Entwicklung ist aktiv.

Die Bibliothek selbst ist in C ++ geschrieben, verfügt jedoch über eine ANSI C-Schnittstelle.

Aus seiner Einführung:

Dank seiner ANSI C-Schnittstelle kann FreeImage in vielen Sprachen verwendet werden, einschließlich C, C ++, VB, C #, Delphi, Java und auch in gängigen Skriptsprachen wie Perl, Python, PHP, TCL oder Ruby.


Es sieht so aus, als ob die Lizenz nicht liberal genug ist.
Michas

@Michas Sie müssen lediglich die Nutzung der Bibliothek bestätigen, andernfalls können Sie die Quellen ändern und in kommerziellen Projekten verwenden. Oder habe ich die Lizenz nicht sorgfältig genug gelesen?
Oskar N.

Ich bin möglicherweise gezwungen, einen Teil des Quellcodes zu veröffentlichen.
Michas

Ich bin mir nicht sicher, woher Sie diese Idee haben ... werden Sie die FreeImage-Bibliothek tatsächlich ändern (Hinweis: wahrscheinlich nicht; seien Sie ehrlich zu sich selbst)?
ChrisE

Dies ist keine praktische Voraussetzung. Ich kenne. Ich wäre einfach glücklicher mit einer liberaleren Lizenz.
Michas

0

Silly wird von den CEGUI- Jungs produziert.

Ich unterstütze das Laden von PNG, TGA, JPG usw. Und es wird mit einer MIT-Lizenz veröffentlicht.

Sie müssten selbst einen C-Wrapper schreiben, da die Bibliothek in C ++ geschrieben ist.


Das Problem ist, dass ich alles mit einem C-Compiler kompilieren möchte.
Michas

0

Wenn Sie nicht viele Formate lesen müssen, sollten Sie Ihren eigenen Loader-Code schreiben. Ich benutze libjpeg und libpng direkt und sie sind ziemlich einfach zu bedienen. Beide haben sehr einfache Funktionen, die im Wesentlichen eine Scanline von RGBA-Daten abrufen, diese einfach in ein Array einfügen und dann in OpenGL hochladen. Beide haben sehr nützliche und unkomplizierte Beispielprogramme.

Ich habe jedoch keine Erfahrung mit anderen Formaten. Aber um ehrlich zu sein, decken PNG + JPEG 100% unserer Bedürfnisse ab (die weder trivial noch hobbyistisch sind - siehe http://www.mysterystudio.com ).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.