C ++ Plattformübergreifender Image Loader für OpenGL

8

Ich habe alles von SDL bis DevIL ausprobiert, und alle sind aus verschiedenen Gründen gescheitert.

SDL segfaults aus verschiedenen Gründen, und DevIL hat ein seltsames Problem, bei dem ich, auch nachdem ich IL / ilut.h eingebunden habe und alles verlinkt habe, nicht die Funktionen definiere, die ich brauche, um Bilder in Opengl-Texturen zu laden USE_OPEN_GL wird nicht definiert). Ich frage nach irgendwelchen anderen Bibliotheken, um Bitmaps oder PNGs in ein Format zu laden, das ich leicht in OpenGL konvertieren kann, oder eine Lösung für das Teufelsproblem.

Danke

    
jimi hendrix 15.07.2009, 01:47
quelle

9 Antworten

15

Sowohl libpng als auch libjpeg können ziemlich abschreckend sein, um & amp; Verwenden Sie - kein Wunder, es gibt alle Arten von Wrapper-Bibliotheken für beide.

Ein sehr einfacher und minimaler No-Nonsense-Loader für jpg / png (und einige andere Sachen auch) ohne Abhängigkeiten in einer einzelnen C-Datei ist Sean Barrets stb_image.c, wenn Sie nur einige Bilddateien laden wollen, fügt es absolut minimal hinzu Overhead zu Ihrem Programm und ist einfach zu bedienen:

Ссылка

    
Ákos 18.07.2010 14:28
quelle
4

Wie Adam vorschlägt, würde ich auch empfehlen, libpng und libjpeg zu verwenden. Sie geben nicht an, ob Sie in C oder C ++ schreiben, aber wenn Sie in C ++ sind, würde ich vorschlagen, zwei nützliche dünne Wrapper in beiden Bibliotheken zu betrachten: pngxx und jpegxx

    
mloskot 06.02.2010 15:20
quelle
3

LodePNG ist ein sehr kompakter PNG Loader ohne Abhängigkeiten.

Kommentiere deine Erfahrung mit DevIL - es funktioniert tadellos für mich und viele andere. Warum nicht noch einmal versuchen, deine Build-Probleme zu lösen? - sollte nicht zu hart sein)

    
Alexander Gessler 06.02.2010 15:11
quelle
3

Sie können auch die FreeImage-Bibliothek ausprobieren. Es unterstützt das Laden von verschiedenen Bildtypen und ist funktionell ähnlich wie DevIL, kann für Sie ohne weiteres funktionieren.

Und zu Ihrem Problem mit DevIL müssen Sie keine ilu- oder ilut-Bibliotheken erstellen, um DevIL funktionsfähig zu machen. Ich würde Ihnen empfehlen, die OpenGL-Texturobjekte selbst zu verwalten, einschließlich des Hochladens von Bilddaten auf OpenGL-Seite.

    
AdilYalcin 06.02.2010 18:35
quelle
2

SOIL ist ein anständiges Leichtgewicht, das ich schon mal benutzt habe. Es ist eigentlich darauf spezialisiert, OpenGL-Texturen zu laden.

Ссылка

    
Ron Warholic 06.02.2010 15:13
quelle
0

Sie brauchen ILUT nicht, um zu tun, was Sie wollen. Sie können einfach ilGetData () und glTexImage2d ()

verwenden     
horseyguy 12.10.2009 01:04
quelle
0

Laden von Bitmaps (.bmp) und netpbm Bilder (.pbm, pgm, .pnm) ist ziemlich trivial, da sie Bilder unkomprimiert speichern. Verwenden Sie zum Laden von PNGs libpng . Verwenden Sie zum Laden von JPEGs libjpeg . Verwenden Sie für andere Bildtypen eine geeignete Bibliothek. Es gibt eine gute Änderung, wenn Sie auf 'lib' an den Anfang des Bildnamens klicken, erhalten Sie eine solche Bibliothek, z. libtiff, libtga, etc.

Nachdem Sie die Rohdaten geladen und dekomprimiert haben, müssen Sie sie nur noch in eine OpenGL-Textur laden. glTexImage2D() mit den richtigen Parametern und einigen anderen GL Statusänderungen (zB wie man Mipmapping macht).

    
Adam Rosenfield 12.10.2009 01:10
quelle
0

Image Magick mit den C- oder C ++ - Bindungen?

Ссылка

    
MichaelM 12.10.2009 01:13
quelle
0

Jung und doch groß genug SFML könnte der sein, nach dem Sie suchen. Ich habe es für zahlreiche Projekte verwendet und alle haben auf allen meinen Plattformen (Win7 und Ubuntu) gut funktioniert.

    
shybovycha 21.11.2010 18:15
quelle

Tags und Links