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ęć.

Michas
źródło

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.

nieważne
źródło
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.)

użytkownik744
źródło
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 .

r2d2rigo
źródło
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.

Oskar N.
źródło
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 ++.

deft_code
źródło
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 )

ggambett
źródło