- •5. Содержание
- •6. Технические требования
- •Санкт-Петербургский государственный электротехнический университет
- •(СПбГэту “лэти”)
- •Календарный план выполнения выпускной квалификационной работы
- •Реферат
- •Содержание
- •Определения, обозначения и сокращения
- •Введение
- •Обзор методов и средств разработки графических приложений для ос багрос-4000
- •БагрОс-4000 как операционная система реального времени
- •Средства разработки графического по для БагрОс-4000
- •Отрисовка кадра с помощью OpenGl
- •Спецификация OpenGl sc 1.0.1
- •Особенности работы с графикой в ос БагрОс-4000
- •Последовательный способ отрисовки
- •Единовременная отрисовка
- •Реализация и тестирование методов отрисовки
- •Реализация метода последовательной отрисовки
- •Реализация метода единовременной отрисовки
- •Тестирование методов отрисовки
- •Состав библиотеки графических примитивов
- •Управляющие функции
- •Функции отрисовки примитивов
- •Функции работы с маскированием
- •Математические функции
- •Порядок работы с библиотекой
- •Пример прикладной программы
- •Разработка и стандартизация программных средств
- •Разработка плана проекта
- •Расчёт цены проекта
- •Расчёт себестоимости проекта
- •Расчёт цены предлагаемого продукта
- •Определение кода разрабатываемого программного изделия
- •Заключение
- •Список использованных источников
- •Приложение а Фрагменты исходного кода библиотеки
Спецификация OpenGl sc 1.0.1
OpenGL – спецификация, определяющая платформонезависимый API для приложений, использующих двумерную и трёхмерную графику. Является одним из стандартов для производителей аппаратуры (в основном видеокарт). Позволяет разрабатывать графические приложения, не обращая внимания на конечную аппаратную реализацию ЭВМ, на которых эти приложения будут запускаться, при условии наличия реализации необходимой версии спецификации. Реализацией спецификации обычно занимаются сами разработчики аппаратного обеспечения.
На данный момент актуальной версией является OpenGL 4.6, опубликованная Khronos Group в 2017-м году.
Также, помимо основной версии спецификации, существует версия повышенной надёжности (Safety-Critical)[ CITATION Ope20 \l 1033 ], в которой основной упор сделан на отказоустойчивость разработанных на её основе приложений. Также одним из немаловажных поводов для создания этой версии было упрощение процесса сертификации разработанного ПО в сфере авионики, промышленности, оружия и автомобилестроения, а также упрощения переноса уже созданных приложений, прошедших необходимую сертификацию.
До создания данной спецификации многие компании по созданию авионики создавали свои реализации спецификации OpenGL, включая туда только необходимые им методы и компоненты. В результате, было создано множество приложений и вариаций OpenGL, прошедших сертификацию повышенного уровня надёжности.
На данный момент существует 2 версии спецификации OpenGL повышенной надёжности:
OpenGL SC 1.0.1, основанная на OpenGL 1.3;
OpenGL SC 2.0, основанная на OpenGL ES 2.0.
Основным отличием Safety-Critical версии от обычной является множество вырезанных методов с условием оставления необходимого минимума для создания графических приложений в тех сферах, где требуется повышенная отказоустойчивость оборудования. Подробное описание различий приведено в документации к спецификации OpenGL SC 1.0.1[ CITATION Khr09 \l 1033 ].
Также накладываются некоторые ограничения на используемые возможности языка, на котором ведётся разработка. В случае с C/C++ философия Safety-Critical запрещает использование динамического выделения памяти и компилируемых во время работы программы шейдеров (в OpenGL SC 2.0) [ CITATION Har17 \l 1033 ].
Особенности работы с графикой в ос БагрОс-4000
Согласно документации разработчика БагрОС-4000[ CITATION ПАО20 \l 1049 ], из-за специфики реализованных на данный момент драйверов ГП, производительность ГП, а, следовательно, и скорость отрисовки кадров довольно сильно повышается при пакетном методе отправки данных на ГП. Причём, чем больше размер пакетов, тем выше скорость передачи.
Поскольку объём информации об одной вершине какой-либо фигуры довольно мал (координаты, цвет), разумно их собирать в пакеты данных и отправлять на ГП в собранном виде. Однако, для большого размера пакета, а следовательно, и большей скорости передачи данных, необходимо в него упаковывать данные о нескольких примитивах, что усложняет хранение данных примитивов в процессе создания пакета, а также увеличивает количество передаваемых данных.
Вследствие чего в процессе создания данного проекта было разработано 2 разных способа отрисовки графических примитивов в процессе отрисовки кадра:
Последовательный – отправка на ГП информации о каждом примитиве по отдельности (частая отправка данных, но уменьшенное количество этих данных).
Единовременный – отправка на ГП информации о всех примитивах, присутствующих в кадре, в конце цикла отрисовки кадра на ЦП (минимальное количество отправок, в идеале одна, но с увеличенным количеством данных).