Программист, познавший основы программирования, должен изучать библиотеки выбранного языка. Библиотеки представляют собой набор инструментов в виде классов и функций, чаще всего более низкого уровня чем сам язык, для расширения возможностей этого языка. Программист должен знать как стандартные библиотеки языка, так и сторонние, которые дают больше возможностей и часто активно разрабатываются командами.
В настоящий момент существует большое количество библиотек для разных языков, которые выполняют разного рода задачи. В данной статье мы рассмотрим графические библиотеки для языков C и C++ НЕ путайте с GUI (графический пользовательский интерфейс).
Они необходимы непосредственно для работы с графикой, через создание окна и вывод на него необходимого изображения или геометрических примитивов, текста и так далее. На них пишут игры и некоторые графические приложения.
SDL 2.0
Эта библиотека дает низкоуровневый доступ к периферии компьютера, что позволяет получать события клавиатуры, мыши, джойстика и управлять выводом видео/аудио. Также это делает библиотеку очень гибкой, быстрой и легковесной. Можно создавать 2D приложения и игры или 3D при использовании OpenGL/Direct3D, которые с SDL2 очень хорошо интегрируются.
Библиотека кроссплатформенна и распространяется на такие десктопные ОС как Windows, Linux, MacOS и мобильные как Android, IOS, Windows Mobile. Изначально написана и используется на C, но существуют привязки ко множеству других языков.
Библиотека хорошо работает вместе с GUI библиотеками Nuklear и WxWidgets, такими же кроссплатформенными. Еще есть официальная библиотека SDL_mixer, дополняющая возможности работы SDL с аудио более гибкими инструментами.
Документации по SDL2:
- wiki.libsdl.org - официальная документация
- lazyfoo.net - довольно популярный, но странный цикл уроков
SFML
Довольно похож на SDL своими возможностями. Он объектно-ориентированный, так как написан и используется на C++, хотя все также есть привязки ко множеству других языков, в том числе C, Python, Rust, как и собственно SDL2. Доступен на тех же платформах что и SDL, а для низкоуровневого доступа к видео точно так же интегрируется с OpenGL и почти настолько же быстрый. По весу занимает несколько больше места, но это не мешает SFML быть одной из лучших библиотек.
Используется чаще всего именно для разработки 2D игр разного рода программистами и небольшими командами. Ведь по праву достоинство этой библиотеки заключается в простоте использования и не требует слишком больших объемов кода.
Это совсем не значит, что SFML нельзя сделать что-то сложное и достойное, а наоборот хорошо для этого подходит.
Советуем изучать официальную документацию, так как она очень хорошо обучает всем тонкостям библиотеки, включая установку. Также там есть множество книг по этой библиотеке.
Cairo
Эта библиотека используется для простого рисования векторных изображений. Cairo может использовать API OpenGL, чтобы работать на GPU, так же как и SDL, SFML. Кроссплатформенный и доступен на Linux, Windows и Mac OS. Написана на C, но может быть использована другими языками программирования
Эта библиотека используется в GUI библиотеке GTK, которая на данный момент является одной из самых популярных. На GTK написано большинство программ под Linux, а некоторые и на Windows, Mac OS. Такие как GIMP, Inkscape, Среда рабочего стола GNOME и т.д.
На русском довольно мало уроков по этой библиотеке. Есть довольно хорошая официальная документация.
Теги: #C++ #Sfml #графическая библиотека #программирование #SDL #cairo