C ++ кросс-платформенный загрузчик изображений для OpenGL - PullRequest
8 голосов
/ 15 июля 2009

Я перепробовал все от SDL до DevIL, и все они потерпели неудачу по разным причинам.

Ошибка SDL по разным причинам, и у DevIL есть какая-то странная проблема, когда даже после того, как я включил IL / ilut.h и связал все, включая другие заголовки, он не определяет функции, необходимые для загрузки изображений в текстуры opengl USE_OPEN_GL не определено). Я прошу любую другую библиотеку для загрузки растровых изображений или png-файлов в формат, который я могу легко преобразовать в opengl, или решение проблемы дьявола.

спасибо

Ответы [ 9 ]

15 голосов
/ 18 июля 2010

Как libpng, так и libjpeg могут быть довольно сложными для сборки и использования - неудивительно, что есть разные библиотеки-обертки для обоих.

Очень простой и минимальный простой загрузчик для jpg / png (и некоторых других вещей) без зависимостей в одном C-файле - это stb_image.c Шона Барретта, если вы просто хотите загрузить некоторые файлы изображений, он добавляет абсолютно минимальный накладные расходы на вашу программу и прост в использовании:

http://nothings.org/stb_image.c

4 голосов
/ 06 февраля 2010

Как предполагает Адам, я бы также рекомендовал использовать libpng и libjpeg. Вы не указываете, пишете ли вы на C или C ++, но если на C ++, то я бы посоветовал взглянуть на две удобные тонкие оболочки на обе библиотеки: pngxx и jpegxx

3 голосов
/ 06 февраля 2010

Вы также можете попробовать Библиотека FreeImage . Он поддерживает загрузку различных типов изображений и функционально похож на DevIL, может работать для вас "из коробки".

А что касается вашей проблемы с DevIL, вам не нужно создавать библиотеки ilu или ilut, чтобы сделать DevIL функциональным. Я бы порекомендовал вам самостоятельно управлять текстурными объектами OpenGL, включая загрузку данных изображений на сторону OpenGL.

3 голосов
/ 06 февраля 2010

LodePNG - очень компактный загрузчик PNG без каких-либо зависимостей.

Прокомментируйте свой опыт работы с DevIL - он работает безупречно для меня и многих других. Почему бы не попробовать еще раз решить ваши проблемы со сборкой? - не должно быть слишком сложно)

2 голосов
/ 06 февраля 2010

SOIL - приличный легкий, который я использовал раньше. На самом деле он также предназначен для загрузки текстур OpenGL.

http://lonesock.net/soil.html

0 голосов
/ 21 ноября 2010

Молодой, но все же достаточно великий SFML может быть тем, кого вы ищете. Я использовал его для многочисленных проектов, и все они хорошо работали на всех моих платформах (Win7 и Ubuntu).

0 голосов
/ 12 октября 2009

Image Magick с привязками C или C ++?

http://www.imagemagick.org/script/index.php

0 голосов
/ 12 октября 2009

Загрузка растровых изображений (.bmp) и изображений netpbm (.pbm, pgm, .pnm) довольно тривиальна, поскольку они хранят изображения без сжатия. Для загрузки PNG используйте libpng . Для загрузки файлов JPEG используйте libjpeg . Для других типов изображений используйте соответствующую библиотеку. Есть хорошее изменение, что добавление 'lib' к началу имени изображения даст вам такую ​​библиотеку, например, libtiff, libtga и т. д.

После того, как вы загрузили и распаковали необработанные данные изображения, загрузка их в текстуру OpenGL - это просто вызов glTexImage2D() с правильными параметрами и пара других изменений состояния GL ( например, как сделать mipmapping).

0 голосов
/ 12 октября 2009

вам не нужен ILUT, чтобы делать то, что вы хотите. Вы можете просто использовать ilGetData () и glTexImage2d ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...