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

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: 

AutoFS

Долго мучился с проблемой зависания файловой системы на точках монтирования к сетевым шарам мастдая. Блокировка возникает при сетевых сбоях, когда сервер на какое-то время оказывается недоступен по сети. Пробежал по "тусовкам" в интернете и выяснил, что этой проблеме подвержены все основные Linux-дистрибутивы - Arch Linux, Gentoo, Ubuntu, Centos.

Cmake

После тестов с Clang остался установленный свежий Cmake. Мне понравился его разноцветный вывод во время сборки тестовых проектов. Попробовал настроить конфигурационный файл для сборки моего проекта в MS-Windows. После почти двух часов борьбы с мануалами и общения с поисковыми системами мой интерес к этой софтине немного поостыл. Конечно, по факту (возможно) Cmake может избавить сторонних специалистов от некоторых проблем со сборкой моего проекта. Но для этого, по-хорошему, надо потратить немало времени на изучение возможностей Cmake, синтаксиса его файлов, подбор модулей.

Clang

Решил попробовать заточить компиляцию проекта в Clang. Что-то много о нем хвалебных постов попадается в последнее время. Но, как сказал Козьма Прутков: "Зри в корень".

Антиспам

Окончательно закрыл форму регистрации на сайте. Теперь регистрироваться можно только через сообщение администратору из контактной формы. Причина банальна: в 99.99% случаях регистрируются аккаунты, которые через сервис https://cleantalk.org/spambots-check уверенно определяются как спамеры.

Первые проблемы

Началось. Вчера закончил работу над проектированием базовых классов, необходимых для работы графического движка - шейдерная программа, элементы пространства, рендер картинки, взаимодействие с пользователем, математика управления камерой. Для проверки всего в комплексе сгенерировал поле из 500х500 = 250 000 прямоугольников с текстурой. Соответственно - один миллион вершин. Каждый прямоугольник использует отдельный Vertex Array Object (VAO). Все значения VAO хранятся в структуре "list"' для покадрового вызова методов отрисовки каждого элемента (VAO). Понятно, что ТАК делать нельзя.

Страницы

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

Uncaught exception thrown in shutdown function.

PDOException: SQLSTATE[HY000]: General error: 8 attempt to write a readonly database: DELETE FROM {semaphore} WHERE (value = :db_condition_placeholder_0) ; Array ( [:db_condition_placeholder_0] => 17731243645f0d282a7e6f27.01300060 ) in lock_release_all() (line 269 of /usr/home/ib/web/trickrig.net/drupal-7.69/includes/lock.inc).