Вложенные функции не являются частью стандартов C. Поэтому нет гарантии, что он будет работать для всех компиляторов, и его определенно следует избегать.
you dont need ILUT to do what you want. you can simply use ilGetData() and glTexImage2d()
Загрузка растровых изображений (.bmp) и изображений netpbm (.pbm, pgm, .pnm) довольно тривиальна, поскольку они хранят изображения без сжатия. Для загрузки PNG используйте libpng . Для загрузки файлов JPEG используйте libjpeg . Для других типов изображений используйте соответствующую библиотеку. Есть хорошее изменение: добавление «lib» к началу имени образа даст вам такую библиотеку, например libtiff, libtga и т. Д.
После того, как вы загрузили и распаковали необработанные данные изображения, загрузив их в Текстура OpenGL - это просто вопрос вызова glTexImage2D ()
с правильными параметрами и парой других изменений состояния GL (например, как выполнять mipmapping).
Как предлагает Адам, я бы также рекомендовал использовать libpng и libjpeg. Вы не указываете, пишете ли вы на C или C ++, но если на C ++, то я бы посоветовал взглянуть на две удобные тонкие оболочки в обеих библиотеках: pngxx и jpegxx
LodePNG - очень компактный загрузчик PNG без зависимостей.
Прокомментируйте свой опыт работы с DevIL - он работает безупречно у меня и многих других. Почему бы не попробовать еще раз, чтобы решить проблемы сборки? - не должно быть слишком сложно)
SOIL - неплохая легкая почва, которую я использовал раньше. На самом деле он также специализируется на загрузке текстур OpenGL.
Вы также можете попробовать библиотеку FreeImage . Он поддерживает загрузку различных типов изображений и по своим функциям аналогичен DevIL, может работать для вас «из коробки».
Что касается вашей проблемы с DevIL, вам не нужно создавать библиотеки ilu или ilut, чтобы DevIL работал. Я бы порекомендовал вам самостоятельно управлять объектами текстуры OpenGL, включая загрузку данных изображения на сторону OpenGL.
Как libpng, так и libjpeg могут быть довольно сложными для создания и использования - неудивительно, что для обоих существуют всевозможные библиотеки-оболочки.
Очень простой и минимальный серьезный загрузчик для jpg / png (и некоторых других вещей) без зависимостей в одном файле C - это stb_image.c Шона Барретта, если вы просто хотите загрузить файлы изображений, он добавляет минимально накладные расходы на вашу программу и просты в использовании: