C++ кросс-платформенный загрузчик изображения для OpenGL

Вложенные функции не являются частью стандартов C. Поэтому нет гарантии, что он будет работать для всех компиляторов, и его определенно следует избегать.

8
задан LiraNuna 11 October 2009 в 14:23
поделиться

8 ответов

you dont need ILUT to do what you want. you can simply use ilGetData() and glTexImage2d()

0
ответ дан 3 November 2019 в 14:19
поделиться

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

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

0
ответ дан 3 November 2019 в 14:19
поделиться

Image Magick with either the C or C++ bindings?

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

0
ответ дан 3 November 2019 в 14:19
поделиться

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

4
ответ дан 3 November 2019 в 14:19
поделиться

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

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

3
ответ дан 3 November 2019 в 14:19
поделиться

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

http://lonesock.net/soil.html

2
ответ дан 3 November 2019 в 14:19
поделиться

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

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

3
ответ дан 3 November 2019 в 14:19
поделиться

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

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

http://nothings.org/stb_image.c

15
ответ дан 3 November 2019 в 14:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: