Опубликовано 31 марта, 2020 - 20:54 пользователем bigov
Из-за пандемии короновируса появилась свободная неделя для работы. Удалось "довести до ума" код разделения на потоки. В ближайших планах - настройка графического интерфейса в основной сцене, работа с шейдерами для управления настройками рендера теней и источников света.
Кроме перечисленного, планируется добавить ещё один или два уровня LOD для тестирования и разработки элементов интерфейса для работы с разными уровнями.
Опубликовано 3 ноября, 2019 - 16:12 пользователем bigov
В общем, теоретически, вопрос с детализацией уровней (LOD) решен. Теперь надо реализовать все это в коде движка. Впрочем, реализация не кажется мне слишком сложной, если не считать возникающих проблем с быстродействием. Вот для их решения пора перестраивать схему работы движка для использования многопоточности.
Опубликовано 21 октября, 2019 - 13:37 пользователем bigov
Код 3D движка TrickRig обеспечивает динамическое перестроение данных в графической памяти (OpenGL VAO), из которых рендерится сцена:
- данные для рендера объектов, которые при перемещении камеры попадают в область видимости, в фоновом режиме подгружаются в VAO;
- ячейки графической памяти с данными, которые вышли за границы области видимости, исключаются из рендера и становятся доступными для записи новых данных.
Опубликовано 31 мая, 2019 - 09:05 пользователем bigov
В разрабатываемом графическом движке одной из базовых возможностей должна стать техника "Level of Detail" (LOD) - изменение детализации 3D-объектов при изменении расстояния до наблюдателя. Без этого невозможно обеспечить онлайн-прорисовку открытого пространства c сохранением приемлемого FPS.
Опубликовано 28 февраля, 2019 - 12:02 пользователем bigov
Реализована новая модель построения объектов в пространстве. Теперь базовым элементом является коробочка - параллелепипед, с ограничением максимального размера, которую условно назвали "box". Так как в box заложены собственные методы изменения размера в любом направлении и рендеринга, то стало намного проще управлять процессом конструирования объектов в пространстве. На очереди - управление размером шага при ручном моделировании объектов произвольной формы и реализация интерфейса выбора текстур для отдельных элементов.
Опубликовано 14 ноября, 2018 - 08:01 пользователем bigov
Целый месяц ушел на поиск и изучение свободных библиотек для создания элементов графического интерфейса. Перебрал наверно десятка два различных библиотек - собирал, изучал документацию, тестировал. В результате, по моему мнению, самой продвинутой и удобной для создания интерфейсов является связка из gtkmm и GTK+. Если бы я разрабатывал мультиплатформенное графическое приложение, без использования OpenGL, то остановил бы свой выбор именно на gtkmm. Правда, должен заметить, что в этот раз я не исследовал QT.
Опубликовано 14 октября, 2018 - 20:26 пользователем bigov
Занялся поиском библиотеки виджетов для настройки графического интерфейса. Пересмотрел несколько библиотек и неожиданно вышел на библиотеку Allegro. Довольно интересная разработка, своего рода "Швейцарский нож" - мультиплатформенная, есть поддержка нативных диалоговых окон, загрузки файлов, мультимедиа и даже OpenGL. Не верилось, но выходило, что можно исключить из проекта сразу несколько библиотек заменив все одним Allegro.
Опубликовано 22 сентября, 2018 - 07:45 пользователем bigov
После летнего перерыва работа возобновилась. Закономерно, что перерыв дает возможность отвлечься от работы над деталями исходного кода и рассмотреть проект в целом. Еще раз проанализировать общую идею, состав, логику работы и структуру проекта.
Опубликовано 28 июня, 2018 - 08:31 пользователем bigov
Как всегда, летом процесс разработки останавливается. Тут еще в апреле сократилась моя должность - пришлось искать новую работу. Проблемы решить удалось, но они тоже не давали заниматься разработкой. Надеюсь, через месяца полтора работа возобновится в прежнем режиме.
Опубликовано 3 февраля, 2018 - 08:41 пользователем bigov
Это конечно круто и увлекательно - писать собственый графический движок. Но чем дольше я этим занимаюсь, тем больше возникает ощущение, что "изобретаешь велосипед". Надо поработать с популярными графическими движками - изучить их устройство и работу. Сейчас, когда уже понятны принципы работы c OpenGL, самое время посмотреть - "а как там у них?".
Страницы