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

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

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

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

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

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

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

Комментариев нет:

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