Графическая библиотека

buttons

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

Tags: 

Allegro

Занялся поиском библиотеки виджетов для настройки графического интерфейса. Пересмотрел несколько библиотек и неожиданно вышел на библиотеку Allegro. Довольно интересная разработка, своего рода "Швейцарский нож" - мультиплатформенная, есть поддержка нативных диалоговых окон, загрузки файлов, мультимедиа и даже OpenGL. Не верилось, но выходило, что можно исключить из проекта сразу несколько библиотек заменив все одним Allegro.

Продолжение работы

После летнего перерыва работа возобновилась. Закономерно, что перерыв дает возможность отвлечься от работы над деталями исходного кода и рассмотреть проект в целом. Еще раз проанализировать общую идею, состав, логику работы и структуру проекта.

Графический движок

Это конечно круто и увлекательно - писать собственый графический движок. Но чем дольше я этим занимаюсь, тем больше возникает ощущение, что "изобретаешь велосипед". Надо поработать с популярными графическими движками - изучить их устройство и работу. Сейчас, когда уже понятны принципы работы c OpenGL, самое время посмотреть - "а как там у них?".

Работа с Clang

Поработал немного с Clang. Впечатление неоднозначное - есть моменты, которые не до конца понятны. Несомненный плюс Clang - это удобная интеграция со средствами разработки для анализа кода. Я даже сделал попытку перейти от использования среды Vim+GCC на Emacs+Clang.

Рендер во фреймбуфер

render TTF

Преодолена еще одна ступенька в процессе развития проекта - реализован рендер во фреймбуфер. Теперь стало понятно, как сравнительно простыми средствами реализовать курсор и HUD в 3D окне.

Достаточно просто решилась задача написания обертки к библиотеке Freetype для работы с текстом. Теперь можно рендерить надписи на экране в произвольном месте почти без снижения быстродействия.

3D движок

Практическая реализация принципа динамического управления содержимым буфера VBO. Такой алгоритм реализовать вполне возможно, если понимать как работает API OpenGL. На видео ниже

Геометрические шейдеры

В процессе поисков увеличения быстродействия графического движка попробовал перенести все процедуры расчета элементов поверхности в GPU. Теперь программа занимает в оперативке меньше 20Мб. Чтобы иметь возможность изменять окружающее пространство, в оперативной памяти основной программы хранится только массив опорных точек, которые используются для расчета и построения поверхностей. Планировалось, что если идея обеспечит нужный эффект, то в дальнейшем координаты опорных точек можно в виде потока передавать из базы данных.

GLFW Trickrig

64 FPS

Закончил перенос базового функционала графического движка Trickrig на работу с библиотекой GLFW. В целом, затея по переходу была не напрасной. В результате полной переработки всего приложения модуль формирования трехмерной графики стал более гибким и быстрым.

Tags: 

SFML + Linux

Месяц назад решил переписать код с использования библиотеки SDL2 на SFML. Меня не устроило отсутствие в SDL2 нативной поддержки текста, а только через сторонний, слабо развиваемый, плагин. Да и сама библиотека SDL2 "ванильная", а SFML "плюсовая". Конечно, я придирался, но решение было принято. Поддержка вывода 2D текстовых сообщений в SFML оказаласть действительно гораздо удобнее. Еще в ней очень удобная работа со звуком (хотя и не без шероховатостей).

Tags: 

Страницы

Подписка на TRICKRIG RSS