Загрузка PNG текстурирует к OpenGL

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

5
задан AshleysBrain 19 April 2010 в 10:36
поделиться

4 ответа

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

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

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

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

6
ответ дан 18 December 2019 в 14:43
поделиться

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

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

5
ответ дан 18 December 2019 в 14:43
поделиться

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

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

1
ответ дан 18 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

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