Что такое графическая библиотека
Графические библиотеки
С графическими устройствами поставляются библиотеки, получившие название графических (graphics libraries). Графическая библиотека, как, например, и математическая, представляет собой набор подпрограмм, предназначенных для решения определенных задач. Конкретная подпрограмма может изображать на экране прямую, круг или иной объект. Графическая библиотека основывается на командах драйвера устройства (рис. 3.1). Каждая подпрограмма создается с использованием поддерживаемого набора команд драйвера.
Рис. 3.2. Использование графической библиотеки
Подпрограммы графической библиотеки могут использоваться точно так же, как подпрограммы математической. Нужная подпрограмма вызывается из основной программы аналогично тому, как вызываются функции синуса и косинуса, когда программисту требуется вычислить их значения. Одна из проблем использования подпрограмм графической библиотеки связана с тем, что их названия и способы вызова (входные и выходные аргументы) у каждой библиотеки свои. Это не создавало бы трудностей, если бы одна графическая библиотека могла работать со всеми существующими устройствами, что теоретически было бы возможным, если бы все существующие драйверы устройств поддерживали ее. Однако по некоторым причинам производители программного обеспечения не хотят или не могут создать графическую библиотеку, которая могла бы работать со всеми драйверами, а потому у каждой библиотеки имеется свой круг поддерживаемых драйверов. Следовательно, такая библиотека может работать лишь с ограниченным набором графических устройств, а графические программы, рассчитанные на работу со множеством устройств, приходится переписывать с использованием нескольких библиотек. Достаточно широкое применение получила коммерческая графическая библиотека OpenGL, которая развивалась независимо от организаций по стандартизации, однако с течением времени она набирает все большую популярность благодаря гибкости в управлении рабочими станциями и персональными компьютерами в сетевой среде. OpenGL — расширение графической библиотеки GL (фирменной графической библиотеки для компьютеров Silicon Graphics1). Благодаря популярности компьютеров Silicon Graphics в областях, связанных с компьютерной графикой, библиотека OpenGL постепенно приобретает статус графического стандарта де факто.
Дата добавления: 2015-06-10 ; просмотров: 1102 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ
п ЗТБЖЙЮЕУЛЙИ ВЙВМЙПФЕЛБИ
мЙТЙЮЕУЛПЕ ОБУФХРМЕОЙЕ
ч ЬФПН ПРХУЕ ТБУУНПФТЕОП ОЕУЛПМШЛП РПРХМСТОЩИ РМБФЖПТНЕООПОЕЪБЧЙУЙНЩИ ВЙВМЙПФЕЛ ДМС СЪЩЛПЧ C/C++ ДМС РПУФТПЕОЙС ЗТБЖЙЮЕУЛЙИ ЙОФЕТЖЕКУПЧ. ч ПФМЙЮЙЕ ПФ Java, СЪЩЛЙ C Й C++ ОЕ УПДЕТЦБФ УФБОДБТФОПК ВЙВМЙПФЕЛЙ ДМС ТБЪТБВПФЛЙ ЗТБЖЙЮЕУЛПЗП ЙОФЕТЖЕКУБ РПМШЪПЧБФЕМС (GUI). чПЪНПЦОП, ФБЛБС УЙФХБГЙС ПВЯСУОСЕФУС ФЕН ЮФП, ЮФП ЬФЙ СЪЩЛЙ РПСЧЙМЙУШ ДП ЫЙТПЛП ТБУРТПУФТБОЕОЙС ЗТБЖЙЮЕУЛЙИ ЙОФЕТЖЕКУПЧ. рПЬФПНХ C/C++ УПДЕТЦБФ УФБОДБТФОХА ВЙВМЙПФЕЛХ ЛПОУПМШОПЗП ЧЧПДБ/ЧЩЧПДБ, Б ДМС РПУФТПЕОЙС GUI ЙУРПМШЪХАФУС УФПТПООЙЕ ВЙВМЙПФЕЛЙ.
пВЭБС ЙОЖПТНБГЙС
лБЛ РТБЧЙМП, GUI ПУОПЧБО ОБ УПВЩФЙКОПК НПДЕМЙ РПЧЕДЕОЙС РТПЗТБННЩ. пВЩЮОБС ЛПОУПМШОБС РТПЗТБННБ РТЕДУФБЧМСЕФ УПВПК ОБВПТ ЖХОЛГЙК, ЛПФПТЩЕ РПУМЕДПЧБФЕМШОП ЧЩЪЩЧБАФ ДТХЗ ДТХЗБ. GUI-РТЙМПЦЕОЙЕ ЦЕ УПДЕТЦЙФ ОБВПТ ЖХОЛГЙК, ЛПФПТЩЕ РТСНП ОЕ УЧСЪБОЩ ДТХЗ У ДТХЗПН Й ЧЩЪЩЧБАФУС ПРЕТБГЙПООПК УЙУФЕНПК РТЙ ОБУФХРМЕОЙЙ ФЕИ ЙМЙ ЙОЩИ УПВЩФЙК: РЕТЕНЕЭЕОЙЕ НЩЫЙ, ОБЦБФЙЕ ЛОПРЛЙ ОБ ЛМБЧЙБФХТЕ, ЧЩВПТБ РХОЛФБ НЕОА, ЧЩДЕМЕОЙЕ ЬМЕНЕОФБ Ч УРЙУЛЕ. фБЛЙЕ ЖХОЛГЙЙ ОБЪЩЧБАФУС ЖХОЛГЙСНЙ «ПВТБФОПЗП ЧЩЪПЧБ» (callback-functions). ч ФЕТНЙОБИGUI-ВЙВМЙПФЕЛ, ЛПФПТЩЕ ЧЩЪЩЧБАФУС Ч ПФЧЕФ ОБ ФП ЙМЙ ЙОПЕ УПВЩФЙЕ ОБЪЩЧБАФУС «ПВТБВПФЮЙЛБНЙ УПВЩФЙК». пВЩЮОП УППФЧЕФУФЧЙЕ НЕЦДХ УПВЩФЙЕН Й ЕЗП ПВТБВПФЮЙЛПН ХУФБОБЧМЙЧБЕФУС У РПНПЭША УРЕГЙБМШОЩИ НБЛТПУПЧ РТЕРТПГЕУУПТБ.
ч РТПЗТБННЕ НПЦЕФ ВЩФШ НОПЗП ПЛПО, РПЬФПНХ ОЕПВИПДЙНП ЙНЕФШ ЧПЪНПЦОПУФШ УПЪДБЧБФШ НБУУЙЧЩ ТБЪМЙЮОЩИ ФЙРПЧ ПЛПО. уРЙУЛЙ (listbox) НПЗХФ УПДЕТЦБФШ УРЙУЛЙ ТБЪМЙЮОЩИ ПВЯЕЛФПЧ, ОБРТЙНЕТ, УФТПЛ ЙМЙ ВПМЕЕ УМПЦОЩИ УФТХЛФХТ. рП ЬФПК РТЙЮЙОЕ ЗТБЖЙЮЕУЛЙЕ ВЙВМЙПФЕЛЙ УПДЕТЦБФ НЕИБОЙЪНЩ ДМС РПУФТПЕОЙС НБУУЙЧПЧ, УРЙУЛПЧ, ИЬЫЕК Й Ф.Д. ДМС РТПЙЪЧПМШОЩИ ФЙРПЧ ДБООЩИ. фБЛ ЛБЛ ЬФЙ ВЙВМЙПФЕЛЙ ОБЮЙОБМЙ ТБЪТБВБФЩЧБФШУС ЕЭЕ ДП ФПЗП, ЛБЛ STL УФБМБ ЮБУФША УФБОДБТФБ C++, ВЙВМЙПФЕЛЙ УБНПУФПСФЕМШОП ТЕБМЙЪХАФ ЖХОЛГЙПОБМШОПУФШ STL ЙМЙ ЕЕ ЮБУФЙ.
вЙВМЙПФЕЛЙ ФБЛЦЕ НПЗХФ УПДЕТЦБФШ ДПРПМОЙФЕМШОЩЕ ЛМБУУЩ, ОЕ ЙНЕАЭЙЕ ПФОПЫЕОЙС Л РПУФТПЕОЙА GUI, ОП РПЪЧПМСАЭЙЕ РЙУБФШ РМБФЖПТНЕООПОЕЪБЧЙУЙНЩЕ РТПЗТБННЩ. лБЛ РТБЧЙМП ЙНЕАФУС ЛМБУУЩ ДМС ТБВПФЩ У ЖБКМПЧПК УЙУФЕНПК, РПДДЕТЦЛЙ УЕФЕЧЩИ РТПФПЛПМПЧ Й Ф.Д.
фБЛ ЛБЛ ПФ ЙОФЕТЖЕКУОПК ЮБУФЙ РТПЗТБННЩ ОЕ ФТЕВХЕФУС ВПМШЫПЗП ВЩУФТПДЕКУФЧЙС, ФП ВПМЕЕ ТБГЙПОБМШОП ТБЪТБВБФЩЧБФШ ЕЕ ОБ ЛБЛПН-ОЙВХДШ ЙОФЕТРТЕФЙТХЕНПН СЪЩЛЕ, ОБРТЙНЕТ Python, Ruby, Tk. рПЬФПНХ РПНЙНП УПВУФЧЕООП GUI-ВЙВМЙПФЕЛ ДМС СЪЩЛПЧ C Й C++ УХЭЕУФЧХАФ Й РТЙЧСЪЛЙ Л ДТХЗЙН СЪЩЛБН, РПЪЧПМСАЭЙЕ РПМОПУФША ЙМЙ ЮБУФЙЮОП ЙУРПМШЪПЧБФШ ВЙВМЙПФЕЛХ Ч РТПЗТБННБИ ОБ ЬФЙИ СЪЩЛБИ.
пЮЕОШ ЮБУФП GUI-ВЙВМЙПФЕЛЙ ТБУРТПУФТБОСАФУС РПД GNU Public License (GPL) ЙМЙ ДБЦЕ ВЕУРМБФОЩ ДМС ЛПННЕТЮЕУЛПЗП РТЙНЕОЕОЙС.
пВЪПТ ВЙВМЙПФЕЛ
ьФБ C-ВЙВМЙПФЕЛБ ЙЪОБЮБМШОП РТПЕЛФЙТПЧБМБУШ ЛБЛ ОБВПТ ЧЙДЦЕФПЧ ДМС ТБЪТБВПФЛЙ ЗТБЖЙЮЕУЛПЗП ТЕДБЛФПТБ GIMP. рПДДЕТЦЙЧБЕФ ЧУЕ ЧПЪНПЦОПУФЙ ПРЙУБООЩЕ ТБОЕЕ. тБУРТПУФТБОСЕФУС РПД GPL. уХЭЕУФЧХА ВЙОДЙОЗЙ ДМС Python, Perl Й ТСДБ ДТХЗЙИ СЪЩЛПЧ. л ОЕДПУФБФЛБН НПЦОП ПФОЕУФЙ ОЕ ПЮЕОШ ЧЩУПЛПЕ ЛБЮЕУФЧП ДПЛХНЕОФБГЙЙ. вЙВМЙПФЕЛБ ТБУРПМБЗБЕФУС РП БДТЕУХ www.gtk.org.
C++-ВЙВМЙПФЕЛБ ТБЪТБВПФБОБ ЖЙТНПК Trolltech. вЙВМЙПФЕЛБ УПДЕТЦЙФ НОПЦЕУФЧП ЛМБУУПЧ ЛБЛ ДМС РПУФТПЕОЙС ЙОФЕТЖЕКУПЧ, ФБЛ Й ЧУРПНПЗБФЕМШОЩИ: ТЕБМЙЪХАЭЙИ ЖХОЛГЙПОБМШОПУФШ ЛМБУУПЧ STL, ПВЕУРЕЮЙЧБАЭЙИ РПДДЕТЦЛХ УЕФЕЧЩИ РТПФПЛПМПЧ Й ВБЪ ДБООЩИ Ф.Д. лМБУУЩ ПЮЕОШ ХДПВОЩ. оБРТЙНЕТ ДМС УФБФЙЮЕУЛПЗП ФЕЛУФБ РТЙНЕОСЕФУС ЛМБУУ QLabel. фБЛБС НЕФЛБ НПЦЕФ ВЩФШ УЧСЪБОБ У ДТХЗЙН ЧЙДЦЕФПН Й БЛУЕМЕТБФПТ ЙМЙ ЗПТСЮХА ЛМБЧЙЫХ (hot-key). рТЙ ОБЦБФЙЙ ОБ ЬФХ ЛМБЧЙЫХ ЖПЛХУ ВХДЕФ РЕТЕДБО ОБ УЧСЪБООЩК ЧЙДЦЕФ. ьФБ ЧПЪНПЦОПУФШ ПЮЕОШ РПМЕЪОБ ДМС УПЪДБОЙС Ч ДЙБМПЗПЧЩИ ПЛОБ РПДРЙУЕК Л ТЕДБЛФПТБН ФЕЛУФБ, УРЙУЛБН Й Ф.Д.
пУПВЕООПУФША ВЙВМЙПФЕЛЙ СЧМСЕФУС ЙУРПМШЪПЧБОЙЕ ДМС УЧСЪЩЧБОЙС УПВЩФЙК Й ЙИ ПВТБВПФЮЙЛПЧ НЕИБОЙЪНБ УЙЗОБМПЧ (signal) Й УМПФПЧ (slot). фБЛПК РПДИПД СЧМСЕФУС ПЮЕОШ ЗЙВЛЙН, ОП ФТЕВХЕФ ДПРПМОЙФЕМШОЩИ ЙОУФТХНЕОФПЧ ДМС РТЕПВТБЪПЧБОЙС УЙЗОБМПЧ Й УМПФПЧ Ч ПВЩЮОЩЕ НЛФПДЩ C++. ч Qt ДМС ЬФЙИ ГЕМЕК РТЙНЕОСЕФУС metobject compiler (moc), ЛПФПТЩК Ч ВПМШЫЙОУФЧЕ УМХЮБЕЧ ЪБРХУЛБЕФУС БЧФПНБФЙЮЕУЛЙ.
вЙВМЙПФЕЛБ УПДЕТЦЙФ ПЮЕОШ РПДТПВОХА Й ДПИПДЮЙЧХА ДПЛХНЕОФБГЙА (РТБЧДБ, РПЮЕНХ-ФП ФПМШЛП ОБ БОЗМЙКУЛПН :). дМС ОБЮБМБ ТБВПФЩ У ВЙВМЙПФЕЛПК НПЦОП ЙУРПМШЪПЧБФШ РПУФБЧМСЕНЩК ЧНЕУФЕ У ОЕК tutorial. ч РПУМЕДОЕЕ ЧТЕНС ЙОФЕТОЕФЕ РПСЧЙМУШ ЛОЙЗЙ ПВ ЙУРПМШЪПЧБОЙЙ Qt ОБ ТХУУЛПН СЪЩЛЕ.
дМС Python УХЭЕУФЧХЕФ РТЙЧСЪЛБ PyQt, ЙУРПМШЪХАЭБС РТБЛФЙЮЕУЛЙ ЧУЕ ЧПЪНПЦОПУФЙ ВЙВМЙПФЕЛЙ. уХЭЕУФЧХАФ ФБЛЦЕ ВЙОДЙОЗЙ ДМС ДТХЗЙИ СЪЩЛПЧ.
вЙВМЙПФЕЛБ ТБУРТПУФТБОСЕФУС РПД ОЕУЛПМШЛЙНЙ МЙГЕОЪЙСНЙ. дМС ЛПННЕТЮЕУЛПЗП ЙУРПМШЪПЧБОЙС ПОБ УФПЙФ ДЕОЕЗ. дМС UNIX УХЭЕУФЧХЕФ GPL-ЧЕТУЙС. 4-С ЧЕТУЙС ВЙВМЙПФЕЛЙ ДМС Windows ФБЛЦЕ ВХДЕФ ТБУРТПУФТБОСФШУС РПД GPL.
уЛБЮБЮФШ ВЙВМЙПФЕЛХ НПЦОП У УБКФБ Trolltech.
wxWindows (wxFrames)
5 кроссплатформенных библиотек для разработки GUI на C++
C++, как и Python и многие другие языки программирования, поставляются без встроенных инструментов построения графического интерфейса пользователя. Так было и до середины 80-х, когда операционные системы для PC разрабатывались без этого типа интерфейсов, и даже после того, как Windows и различные операционные системы от Apple стали нормой, и событийно-ориентированному программированию потребовалось несколько дополнительных лет, чтобы наверстать упущенное.
Тридцать лет назад весь ввод/вывод был сделан на символьных дисплеях. Так было до начала 90-х, когда появились первые графические библиотеки. С тех пор Mac OS (и в меньшей степени Linux) выросла по важности по сравнению с Windows, что делает более привлекательными инвестиции в создание программного обеспечения, которое может работать на всех трех платформах без необходимости переписывать код
Без кроссплатформенных инструментов, вы должны были бы существенно переписать код для любой другой платформы только лишь для того, чтобы организовать обработку ввода/вывода и взаимодействие с пользователем. В то же время, графика на каждой операционной системе выполняется совершенно по-разному. Кроссплатформенные инструменты до некоторой степени защитят вас от этих различий и странностей.
Вам может никогда не понадобиться портировать ваше Windows приложение на Mac или Linux, но, по крайней мере, вы будете знать, что можете сделать это. В этом списке мы рассмотрим пять кроссплатформенных инструментов разработки GUI, которые написаны на C++ и все еще находятся в стадии активного развития. Пятерка, которую я выбрал, это Qt, wxWidgets, JUCE, CEGUI и CEF (некоторые другие, особенно GTK, MFC и Cocoa, не включены в список, так как они не полностью кроссплатформены).
Этот старый фреймворк открыл себя заново со своей новой версией, Qt 5, которая используется везде, ото мобильных приложений до автомобилей и медицинского оборудования. Одним из его преимуществ является оконная системя, которая позволяет вам создавать пользовательские интерфейсы и включает в себя дополнительные функции, такие как отображение диаграмм, визуализация данных и карт от сторонних провайдеров. Qt версии 5 теперь обрабатывает прикосновения так же, как и взаимодействие с мышью и клавиатурой, и вы можете добавить виртуальные клавиатуры на X11 и Windows. На KDE Linux Qt является нативной библиотекой GUI, поэтому, если вы разрабатываете для KDE платформ, то вам следует рассмотреть Qt.
wxWidgets
Разработчик Джулиан Смарт создал wxWidgets 24 года назад (что делает его старше, даже чем Qt) и остается его главным разработчиком. Эта библиотека во многом похожа на Qt, хотя некоторые разработчики предпочитают ее, так как она использует родные графические элементы операционной системы, на которой запущена программа. Это заставляет приложения выглядеть более «родными»; например, на Windows, она будет использовать Windows графику.
(Для сравнения, Qt отрисовывает свои собственные виджеты на каждой платформе, хотя и старается выглядеть как можно ближе к платформе, используя некоторый низкоуровневый код для отрисовки полос прокрутки и кнопок.)
Данная кроссплатформенная библиотека с открытым исходным кодом использует аналогичную лицензию, что и Qt. Она фокусируется на кроссплатформенных аудио, интерактивных, встроенных и графических приложениях.
Первоначально разрабатываемая британским разработчиком Жюлем Сторером, была приобретена компанией Raw Material Software, которая разрабатывает аудиопродукцию. В результате, JUCE обладает большим количеством функциональных возможностей при работе с аудио, поскольку она изначально разрабатывалась для создания аудиоприложений.
Библиотека JUCE также включает в себя множество графических элементов пользовательского интерфейса, графику, аудио, парсинг XML и JSON, работу с сетью, криптографию, многопоточность и встроенный интерпретатор, который работает с синтаксисом, имитирующим ECMAScript. Это уменьшает или устраняет необходимость в сторонних библиотеках и проблемы с зависимостями, которые те могут вызвать. Нет ничего ужаснее, чем обновление сторонних инструментов, которое ломает сборку проекта.
JUCE также включает в себя “introjucer”, инструмент IDE, который может генерировать проекты Xcode, проекты Visual Studio, Linux Makefile, сборки Android Ant и проекты CodeBlocks.
CEGUI
Crazy Eddie GUI (GUI сумасшедшего Эдди) разрабатывается, начиная с 2003 года, и вполне возможно, версия 1.0 выйдет уже к 2020 году, поскольку текущая версия 0.87. Как и другие в этом списке, она работает на Windows, Linux и Mac и поддерживает и 64, и 32-битные системы. В отличие от остальных GUI библиотек в этом списке, она фокусируется на разработке игр, но, как говорилось, дает разработчику пакет виджетов (кнопки, выпадающие списки и т.д.), поэтому вы не ограничены только игровыми приложениями.
Большинство игр требуют графический интерфейс для всех меню и экранов настройки, которые рендерятся на таких платформах, как DirectX или OpenGL. Они поддерживают скины, позволяя выполнять настройку, чтобы соответствовать эстетике игры.
Конфигурация CEGUI также широко использует XML файлы. Они служат не только для настройки скинов (то есть, как выглядят элементы управления, общая цветовая схема и т.д.), для всего остального, такого как анимация, изображения, компоновка и схема управления файлами данных игры. Все они опираются на XML.
Chromium Embedded Framework – это простой фреймворк для встраивания браузеров на базе Chromium в другие приложения. Это отличает его от других библиотек C++ в списке, которые предназначены для создания автономных приложений. Вы могли не слышать об этом, но согласно документации, существует более 100 миллионов экземпляров CEF, встроенных во множество продуктов. CEF уже 8 лет, и он дорос уже до версии 3.
Интеграция в браузер Chrome позволяет получить доступ к JavaScript, ускорению GPU через WebGL, рендерингу в закадровую память и, в ближайшее время, к речевому вводу
Заключение
Хотя все эти библиотеки написаны на C++, доступно множество привязок языков, поэтому стоит проверить, какие языки программирования вы можете использовать с ними. wxWidgets особенно хорош в этом отношении, как и Qt, который используется в нескольких специализированных операционных системах и автомобильном ПО. Qt кажется более популярным на предприятиях, по-видимому, из-за платной поддержки, в то время как ученые и независимые разработчики предпочитают wxWidgets, поскольку он бесплатен и соответствует Qt.
И Qt, и wxWidgets охватывают много одинаковых областей, и это, возможно, случай для выбора в зависимости от личного предпочтения. Оба фреймворка имеют множество сторонних инструментов для упрощения разработки.
Я добавил сюда CEF, потому что включение браузера в десктопное приложение может пригодиться, возможно, для показа онлайн документации, отображения ссылок на новости или отображения загрузки обновления.
Обзор графических библиотек C++
Графические библиотеки для C++ позволяют сделать разработку UI приложений максимально быстрой и удобной. Рассказываем, на какие стоит обратить внимание.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
SFML (Simple and Fast Multimedia Library) — одна из самых удобных и быстрых графических библиотек для C++. Её неоспоримое преимущество — минимальные требования к уровню знаний языка и лёгкость освоения: всего за несколько дней можно написать вполне полноценную программу. К примеру, первое графическое приложение «SFML works!» можно написать всего за минуту. Ещё одно преимущество — кроссплатформенность: SFML работает под Windows, Linux (только X11, но не Wayland) и Mac OS, планируется выход под Android и iOS.
SFML библиотека используется по большей части небольшими стартапами и программистами, для которых создание игр — хобби. SFML популярен среди небольших команд благодаря тому, что разработка графической части программы не требует написания больших объёмов кода.
Qt представляет собой целый набор инструментов для быстрого и удобного проектирования GUI. Конечно же, здесь можно писать и игры — почему бы и нет? — но Qt привлекает программистов в основном тем, что она является быстрой, удобной, гибкой и кроссплатформенной. Во многом Qt обогнала даже SFML: библиотека доступна как на Windows, Linux и Mac OS, так и на мобильных платформах — Windows Mobile, Android и iOS.
Qt расширяет C++ с помощью МОК (Мета-объектного компилятора) и предоставляет дополнительные функции (например, сигналы и слоты). Также имеет платную службу поддержки (как и платную лицензию). Для Qt есть большой выбор IDE: QtDesigner, QtCreator, QDevelop, Edyuk, а также доступна интеграция с Visual Studio, Eclipse и XCode.
Qt является open source продуктом, в разработке которого можно принять участие. О других open source проектах для C++ читайте в нашей статье.
Вы можете пройти готовый курс по данной библиотеке.
Cairo
Cairo — библиотека для отрисовки векторных изображений под Linux, Windows и Mac OS. К примеру, такой крупный проект, как Mozilla, использует Cairo в браузерном движке Gecko. Также Cairo лежит в основе некоторых операционных систем (MorphOS, AmigaOS) и приложений (InkScape, Synfig, Graphite). При использовании библиотеки будьте готовы к отсутствию русскоязычных ресурсов.
Cairo может взаимодействовать с OpenGL бэкендом с поддержкой GPU, что, конечно, открывает целый список полезных функций.
Cocos2D-X
Кроссплатформенная библиотека Cocos2D-X призвана упростить разработку мобильных игр. Поддерживает все те же платформы, что и Qt. Из плюсов стоит отметить доступность, удобство эксплуатации и создание отдельного конструктора игр, основанного на библиотеке Cocos Creator. В списке игр, основанных на движке, есть всемирно известная BADLAND, работающая на всех доступных платформах.
Если при создании игры вам нужно работать с графикой и анимацией в больших объёмах, то лучше использовать Unity вместо Cocos2D-X. Unity имеет возможность плавной интеграции с такими инструментами, как Photoshop, Maya или Blender. В Cocos2D-X вся графика добавляется извне и на неё ссылаются из кода.
В Рунете нет уроков по этой библиотеке, но на английском языке есть отличный курс от разработчиков.
Juce — кроссплатформенный фреймворк, предназначенный для создания приложений и плагинов на языке C++.
Документации по Juce много, но не на русском языке. Поэтому можно скачать книгу «Программирование на C++ с JUCE 4.2.x: Создание кроссплатформенных мультимедийных приложений с использованием библиотеки JUCE на простых примерах».
Juce больше популярен среди разработчиков аудио — ПО благодаря набору интерфейсов-оболочек для построения аудио плагинов.
wxWidgets
wxWidgets — одна из старейших, но в то же время наиболее известных графических библиотек для отрисовки GUI. Её основной плюс — производительность. Если QT использует низкоуровневый код лишь для таких элементов, как кнопки и полосы прокрутки, то wxWidgets для каждой системы свой, и благодаря этому все элементы отображаются максимально похожими на системный стиль.
Важная особенность wxWidgets заключается в использовании «родных» графических элементов интерфейса операционной системы везде, где это возможно. Это существенное преимущество для многих пользователей, поскольку они привыкают работать в конкретной среде, а изменения интерфейса программ часто вызывают затруднения в их работе.
В Сети есть урок по работе с библиотекой от её разработчиков.
SDL 2.0
SDL — кроссплатформенная 2D-библиотека, предназначенная для написания приложений (в основном игр). Поддерживаются Windows, Linux, Mac OS, а также Android, Windows Mobile и iOS. Преимущества библиотеки — быстрота, надёжность и лёгкость в эксплуатации. Также в библиотеке реализованы профессиональные инструменты для работы со звуком — это большой плюс при разработке крупных проектов.
Комбинируется с wxWidgets и хорошо интегрируется с OpenGL.
Существует целый цикл уроков, размещённый на Habr.
Пожалуй, одна из самых известных графических библиотек. GTK+ — графический фреймворк, широко применяемый во многих системах. Изначально он задумывался как компонент GIMP, но за 20 лет после выпуска первой стабильной версии он нашёл применение в сотнях других приложений.
Сейчас GTK+ — это полноценный графический фреймворк, не уступающий тому же QT. Он поддерживает разные языки программирования и продолжает развиваться.
В своё время библиотека создавалась в качестве альтернативы Qt, которая была платной. GTK+ — один из немногих фреймворков, которые поддерживают язык C. Библиотека кроссплатформенная, но есть мнение, что программы на Linux выглядят более нативно, чем на Windows или Mac OS (GTK+ хорошо поддерживается даже на KDE). Интересно, что из-за некоторых проблем с кроссплатформенностью Wireshark перешла на Qt.
Пример первой программы можно посмотреть на Википедии.
Fast Light Toolkit
FLTK (произносится как «фуллтик») — графическая библиотека, которая работает на Windows, Linux (X11) и Mac OS. Поддерживает 3D графику с помощью OpenGL и имеет встроенный GLUT симулятор. Есть встроенный софт для создания интерфейсов — FLUID. Документация по библиотеке находится здесь.
Nana — это кроссплатформенная библиотека для программирования GUI в стиле современного C++. Поддерживаемые системы: Windows, Linux (X11) и Mac OS (экспериментально). Поддержка С++11\17 даёт возможность использовать современные фичи C++: лямбды, умные указатели и стандартную библиотеку. Так как это не фреймворк, использование Nana не будет оказывать влияния на архитектуру программы.
Здесь можно посмотреть документацию и примеры.
Заключение
Всегда следует учитывать особенности той или иной технологии. Выпишите список функций своего приложения, ещё раз прочитайте описания всех графических библиотек C++, и только после этого выбирайте то, что подойдёт вам больше всего.
Примитивная графика для ленивых, олдфагов и ленивых олдфагов
Привет, Хабр. Напоролся я не так давно в сети на довольно простенькую библиотеку для работы с графикой в С/С++, которая может быть полезна школьникам и студентам в их программных изысканиях (не требуя при этом почти никаких знаний), а также некоторым олдфагам, которые помнят древнюю как мамонт графику для DOS. В частности, такой примитивный графический либ, как graphics.h для Турбо Си, на который до сих пор влажно смотрят учителя информатики в школах и преподаватели программирования в универах.
Если коротко, библиотека graphics — это такая штука от борланд, не принятая стандартом, которая умеет рисовать графику и при этом если надо нарисовать какой-нибудь прямоугольник, не требует никаких монструозных конструкций из указателей, векторов и прочих страшных для новичка вещей. Достаточно просто ввести rectangle() и в скобках указать координаты верхней левой и правой нижней точек прямоугольника. И все.
Так вот, народные умельцы смогли портировать эту библиотеку под MinGW и чутка доработали, прикрутив нормальную работу с мышью и клавиатурой, загрузку и запись файлов изображений, поддержку всей палитры RGB (против 16 цветов, доступных graphics.h изначально) и еще нескольких мелких фишек, обладая которыми эта старушка еще может пригодиться для быстрого создания примитивной (и не очень) графики.
Зовется это поделие Winbgim.
→ Качать тут
→ Подключение и настройка тут
Кратко о данной библиотеке:
+ Легкая в освоении новичку
+ Простая в подключении
+ Не требовательна к ресурсам системы
+ Умеет в любые разрешения и адаптеры (хоть под CGA пиши)
+ Умеет загружать изображения без извращений
+ Умеет в события мыши/клавиатуры
+ Умеет в полную палитру RGB
— Незначительный набор стилей заливки и линий (решается не отрисовкой примитивами, а простой загрузкой готовых изображений)
— Незначительный набор шрифтов для вывода текста в графическом режиме (фиксится обращением к виндовым файлам шрифтов, но там требуются некоторые танцы с бубном)