Biblioteka do ładowania obrazów do tekstur, Linux, C i OpenGl


9

Szukam prostej, niezależnej biblioteki C dla systemu Linux do ładowania obrazów z plików do tekstur OpenGL. Licencja powinna być dość liberalna: zlib, bsd, mit czy coś. Znalazłem GLEBĘ , jednak nie była ona aktualizowana przez długi czas. Czy jest coś jeszcze, czy muszę pisać własne?

PS Używam glfw. Istnieją tylko przestarzałe funkcje do ładowania zdjęć.

Odpowiedzi:


5

Używam STB Image do większości ładowania obrazów. Mała jaźń nie zawierała żadnych łańcuchów implementacji png i innych formatów plików.


3
SOIL to lekkie opakowanie wokół stb_image.

Ach, nie byłem tego świadomy.
— nieważne

11

GLEBA działa świetnie. Kogo to obchodzi, jeśli nie zostało zaktualizowane przez „długi czas”? Oznacza to po prostu, że jest stabilny i dobrze zrozumiany.

(W rzeczywistości został zaktualizowany w 2008 r., Co wcale nie tak dawno temu.)


Dla tych, którzy widzą to teraz - SOIL nie działa na iOS, więc jeśli Twoim celem jest przenośność, lepszym rozwiązaniem może być bezpośrednie użycie stb_image.
— Ed Ropple,

2

Spójrz na DevIL .


DevIL jest na licencji LGPL. To dla mnie trochę zbyt restrykcyjne.
— Michas

1
Pamiętaj, że dopóki nie zmodyfikujesz oryginalnego kodu źródłowego, możesz połączyć się z biblioteką LGPL i zachować główny kod zamknięty / prywatny / używany do celów komercyjnych.
— r2d2rigo

1
Wiem. Chcę jednak połączyć wszystko w jednym pliku.
— Michas

2

Sprawdź FreeImage . Jest podwójnie licencjonowany, możesz wybrać GPL lub liberalną licencję FreeImage. Obsługuje znacznie więcej formatów obrazu niż SOIL, a programowanie jest aktywne.

Sama biblioteka jest napisana w C ++, ale ma interfejs ANSI C.

Od jego wprowadzenia:

Dzięki interfejsowi ANSI C, FreeImage jest dostępny w wielu językach, w tym C, C ++, VB, C #, Delphi, Java, a także w popularnych językach skryptowych, takich jak Perl, Python, PHP, TCL lub Ruby.


Wygląda na to, że licencja nie jest wystarczająco liberalna.
— Michas

@Michas Wszystko, czego potrzebujesz, to potwierdzenie korzystania z biblioteki, w przeciwnym razie możesz dowolnie modyfikować źródła i wykorzystywać je w komercyjnych projektach. A może nie przeczytałem licencji wystarczająco uważnie?
— Oskar N.

Mogę zostać zmuszony do opublikowania części kodu źródłowego.
— Michas

Nie jestem pewien, skąd bierzesz ten pomysł ... czy rzeczywiście zamierzasz zmodyfikować bibliotekę FreeImage (wskazówka: prawdopodobnie nie; bądź ze sobą szczery)?
— ChrisE

To nie jest praktyczny wymóg. Wiem. Byłbym szczęśliwszy z bardziej liberalną licencją.
— Michas

0

Silly jest produkowany przez facetów CEGUI .

Obsługuję ładowanie PNG, TGA, JPG itp. I jest wydany z licencją MIT.

Musisz sam napisać opakowanie C, ponieważ biblioteka jest napisana w C ++.


Problem polega na tym, że chcę skompilować wszystko za pomocą kompilatora C.
— Michas

0

Jeśli nie musisz czytać wielu formatów, rozważ napisanie własnego kodu modułu ładującego. Używam libjpeg i libpng bezpośrednio i są one dość łatwe w użyciu. Oba mają bardzo proste funkcje, które w zasadzie pobierają linię danych RGBA, po prostu umieszczają ją w tablicy, a następnie przesyłają do OpenGL. Oba mają bardzo przydatne i proste programy przykładowe.

Jednak nie mam doświadczenia z innymi formatami. Ale szczerze mówiąc, PNG + JPEG pokrywają 100% naszych potrzeb (które nie są trywialne ani hobbystyczne - patrz http://www.mysterystudio.com )

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.