Бібліотека для завантаження зображень у текстури, Linux, C та OpenGl


9

Я шукаю просту, автономну бібліотеку С для Linux, щоб завантажити зображення з файлів у текстури OpenGL. Ліцензія повинна бути досить ліберальною: zlib, bsd, mit чи щось таке. Я знайшов грунт , однак він давно не оновлювався. Чи є ще щось, або я повинен написати своє?

PS Я використовую glfw. Існують лише застарілі функції для завантаження зображень.

Відповіді:


5

Я використовую зображення STB для більшості завантажень зображень. Невеликий власний текст не містив рядків, що додаються в реалізацію png та інших форматів файлів.


3
Грунт - це легка обгортка навколо stb_image.

Ах, я про це не знав.
недійсна

11

Грунт працює чудово. Кого хвилює, чи не було оновлено "тривалий час"? Це просто означає, що він стабільний і добре зрозумілий.

(Він фактично був оновлений у 2008 році, що зовсім недавно.)


Для тих, хто зараз бачить це - SOIL, здається, не працює на iOS, тому, якщо ваша мета - переносимість, кращим варіантом може бути використання stb_image.
Ед Роппл

2

Погляньте на DevIL .


DevIL знаходиться під LGPL. Це для мене занадто обмежувально.
Michas

1
Майте на увазі, що доки ви не змінюєте вихідний вихідний код, ви можете зв’язатись із бібліотекою LGPL і зберегти основний код закритим / приватним / використаним для комерційних цілей.
r2d2rigo

1
Я знаю. Однак я хочу пов'язати все в один файл.
Michas

2

Перевірте FreeImage . Це подвійна ліцензія, ви можете вибрати або GPL, або ліберальну ліцензію FreeImage. Він підтримує набагато більше форматів зображень, ніж SOIL, і розробка активна.

Сама бібліотека написана на C ++, але вона має ANSI C інтерфейс.

З моменту його впровадження:

Завдяки інтерфейсу ANSI C, FreeImage можна використовувати на багатьох мовах, включаючи C, C ++, VB, C #, Delphi, Java, а також у загальних мовах сценаріїв, таких як Perl, Python, PHP, TCL або Ruby.


Схоже, ліцензія недостатньо ліберальна.
Michas

@Michas Все, що вам потрібно, це визнати використання бібліотеки, інакше ви можете змінювати джерела та використовувати їх у комерційних проектах. А може, я не прочитав ліцензію досить уважно?
Оскар Н.

Мене можуть змусити опублікувати частину вихідного коду.
Michas

Я не впевнений, звідки у вас ідея ... Ви насправді збираєтеся змінити бібліотеку FreeImage (натяк: напевно, ні; будьте чесні до себе)?
ChrisE

Це не практична вимога. Я знаю. Я просто був би щасливішим з більш ліберальною ліцензією.
Michas

0

Нерозумно виробляють хлопці CEGUI .

Я підтримую завантаження PNG, TGA, JPG тощо. Він випускається з ліцензією MIT.

Вам доведеться самостійно писати обгортку C, оскільки бібліотека написана на C ++.


Проблема в тому, що я хочу зібрати все за допомогою компілятора C.
Michas

0

Якщо вам не потрібно читати багато форматів, подумайте про те, щоб написати власний код завантажувача. Я використовую libjpeg та libpng безпосередньо, і вони досить прості у використанні. Обидва мають дуже прості функції, які по суті отримують сканування даних RGBA, просто поміщають їх у масив і потім завантажують у OpenGL. Обидва мають дуже корисні та прості приклади програм.

Я не маю досвіду роботи з іншими форматами. Але якщо чесно, PNG + JPEG покриває 100% наших потреб (які не є тривіальним та не любителем - див. Http://www.mysterystudio.com )

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.