Целый месяц ушел на поиск и изучение свободных библиотек для создания элементов графического интерфейса. Перебрал наверно десятка два различных библиотек - собирал, изучал документацию, тестировал. В результате, по моему мнению, самой продвинутой и удобной для создания интерфейсов является связка из gtkmm и GTK+. Если бы я разрабатывал мультиплатформенное графическое приложение, без использования OpenGL, то остановил бы свой выбор именно на gtkmm. Правда, должен заметить, что в этот раз я не исследовал QT. Давно, когда я только начинал изучать C++, у меня была попытка ознакомиться с этой библиотекой. Но, вероятно ввиду отсутствия опыта, работа с ней показалась мне слишком “мутной”. Поэтому в этот раз желания обращаться к ней у меня не появилось.

Но любые внешние библиотеки увеличивают, как минимум на 9 - 10 мегабайт, размер приложения. На текущий момент это увеличение почти в два раза. Плюс к этому появляется значительное количество внешних зависимостей, уменьшается качество кода и стабильность работы. Поэтому после всей проведенной работы по поиску удобной GUI библиотеки я понял, что нарисовать пару кнопок и вывести строку текста в моем приложении можно и без лишних зависимостей.

Всё оказалось сравнительно просто. Имея в распоряжении готовое окно и текстуру фрейм-буфера, нарисовать кнопки, текстовое поле и даже строку ввода оказалось намного проще, чем строить 3D картинку вида из камеры. На скриншоте реализованные самостоятельно GUI кнопки для управления запуском приложения. Весь код занимает не больше сотни строчек. Если бы это была внешняя библиотека, то количество строк для ее подключения было бы ненамного меньше, но появился бы огромный кусок дополнительного (чужого) кода. Выводы, как говорится “на лицо”.