Показаны сообщения с ярлыком SDL. Показать все сообщения
Показаны сообщения с ярлыком SDL. Показать все сообщения

воскресенье, 30 ноября 2014 г.

Оконный менеджер

Прототип оконного менеджера задышал. Фишка в том, что он делается полностью средствами самого Блэкбокса. То есть, используются отображения - Views.View.

Собственно, ничего военного тут нет. Главное, аккуратность и внимание к деталям. Тогда результат будет удобен в работе. На видео заметно, как меняется цвет бордюра, как работает изменение размеров, как окна передвигаются мышой:

Так что, движемся. Всё-таки решение отказаться от многооконности SDL было правильным. Чем мучаться с ограничениями SDL, так лучше заиметь полностью контролируемые окна. А ведь этот гуй можно будет втереть даже в игровой движок. Двойная выгода!

вторник, 22 апреля 2014 г.

SDL + OpenGL. Начало

Наша компонентная привязка к SDL получила возможность рисовать на контексте OpenGL. А это значит, что скоро SDL-хост сможет, наконец, выполнять весь контракт по рисованию на порте.

понедельник, 14 апреля 2014 г.

Проблема выбора интерфейса аппаратного ускорения

Наш новый SDL-хост начал работу с команды Views.OpenView, которая открывает отображение в новом окне.
На данный момент наше отображение успешно рисует прямоугольник и пару линий. Это всё, чему удалось научить HostPorts.Rider. Вроде бы, можно смело двигаться дальше, но тут нас поджидает подводный камень, в виде очень примитивного базового интерфейса SDL.

Дело в том, что интерфейс Ports.Frame предоставляет функции рисования не только линий и прямоугольников. Фрейм способен нарисовать полигон, с заливкой и без. Можно рисовать окружности, с заливкой и без. Да и обычным линиям можно задавать толщину, а окончания линий рисуются в виде окружности (что улучшает вид ломаных). Прямоугольники тоже можно рисовать линиями разной толщины.

Конечно, на SDL можно изобразить необходимые примитивы с помощью базовых возможностей, но рисоваться всё это будет медленно, к гадалке не ходи. Кстати, сам автор SDL, Сэм Лантинга, тоже задавался этим вопросом и пришёл к логичному выводу: зачем заниматься тормознутым самодельным рендерингом, когда давно есть OpenGL с Direct3D, умеющие рисовать с аппаратным ускорением.

Поэтому нам надо выбирать, на какой интерфейс ориентировать BlackBox. Раньше я считал, что лучшим решением будет использование только средств SDL, но теперь становится очевидно - выбора не избежать. А выбор для нас тоже очевиден - OpenGL.

Таким образом, наш SDL-хост уже нельзя будет считать чисто SDL-платформенным. Весь рендер в нём будет плотно завязан на возможности OpenGL. Но, кстати, в наших силах использовать компонентность так, чтобы это не мешало развитию хоста.

вторник, 18 марта 2014 г.

Что делать дальше?

Итак, пускач для SDL-хоста работает. Средствами SDL мы окно успешно создали. В каком направлении двигаться дальше, как развивать новый хост?

Ответ на этот вопрос может дать понимание документоориентированности каркаса BlackBox. Кроме этого, каркас поддерживает разделение на пространство отображения и пространство документа. Любое окно в нём связано с объектом документа. Стало быть, нам надо научить SDL-хост открывать документы.

А как же открываются документы, и вообще отображения в эталонном BlackBox? Чтобы это понять, пришлось произвести небольшой анализ, который может оказаться полезным всем, кто интересуется внутренним устройством каркаса.

суббота, 15 марта 2014 г.

SDL-хост. Первый шаг сделан.

Отдельной подсистемой появился SDL-хост, согласно идеям герметичности. Для него был собран отдельный пускач x86sdl.exe. Сейчас разработка идёт под Windows, когда каркас поднимется полностью, перенесём и на Linux.

Третьего дня отладили инициализатор, который открывает окно SDL и запускает главный цикл (event loop).

Первая демка успешно отрисовала примитивы:

воскресенье, 9 марта 2014 г.

Идём на SDL

Начал переделывать win32-хост в SDL-хост. Работа с окнами совершенно другая, алгоритмы из ключевых модулей типа HostMenus будут полностью переделаны или заменены новыми.

Сейчас у нас есть компонентный биндинг к SDL2, очень минимальный, реализующий только самое необходимое для старта. Конечно, в процессе переноса хоста на SDL, биндинг тоже будет прокачиваться.

Интересно, что в итоге получится и сколько времени займёт переход на SDL. 

Постоянные читатели