Загрузка текстур PNG в OpenGL - PullRequest
5 голосов
/ 18 апреля 2010

Я работаю над игрой, и вся моя графика использует пурпурный как прозрачный / волшебный цвет. Все они 32-битные и пурпурный только для удобства. В любом случае, я был бы признателен, если бы кто-нибудь посоветовал мне, какую библиотеку мне использовать для загрузки моих изображений (мне нужно загрузить их в формате GL_RGBA, как для внутренних, так и для текстур).

Ответы [ 5 ]

6 голосов
/ 19 апреля 2010

Если необходима только поддержка PNG, используйте libpng. DevIL должен быть легким, но он несколько раздутый (делает гораздо больше, чем просто загрузка изображений) и фактически вызывает функции OpenGL, которые могут портить вашу собственную логику OpenGL.

Я лично предпочитаю SDL_image, так как в любом случае я использую SDL в своих проектах. Хотя это не сразу очевидно, функция SDL_BlitSurface () может выполнить преобразование из того, что IMG_Load () возвращает в необходимый формат пикселей.

5 голосов
/ 18 апреля 2010

DevIL может загружать практически любой формат файла и может напрямую создавать текстуры OpenGL. Это самый простой путь.

Вам также следует использовать формат файла, который поддерживает альфа-канал (PNG, TGA, ...). Использование «волшебного цвета» в 32-битных изображениях действительно устарело!

1 голос
/ 21 апреля 2010

Здесь приведен очень минималистичный пример загрузки файла png в openGL:

http://tfc.duke.free.fr/coding/src/png.c

1 голос
/ 19 апреля 2010

Помимо других ответов, в которых упоминаются SDL и DevIL, есть еще два варианта:

  • Используйте libpng напрямую. Это, вероятно, окажет наименьшее влияние на размер кода, если это имеет значение, поскольку вы не получаете раздувание для других форматов, которые вы не используете, без DLL и т. Д.
  • Использовать загрузку текстур операционной системы. Это может быть хорошим способом уменьшить зависимости, если вы предпочитаете использовать функции ОС вместо внешних библиотек. GDI + в Windows XP и выше имеет встроенную загрузку текстур для нескольких форматов, таких как PNG и JPEG, и я точно не знаю, но другие ОС могут иметь аналогичные функции. Подключить GDI + к OpenGL довольно просто, и тогда ОС позаботится о загрузке текстур!
0 голосов
/ 28 февраля 2012

Другой вариант - OpenCV.

Это намного больше, чем просто загрузка текстуры, но шансы хороши, что вы найдете и другие его функции.

...