Скачиваний:
82
Добавлен:
16.07.2022
Размер:
1.8 Mб
Скачать
    1. Спецификация 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 ].

    1. Особенности работы с графикой в ос БагрОс-4000

Согласно документации разработчика БагрОС-4000[ CITATION ПАО20 \l 1049 ], из-за специфики реализованных на данный момент драйверов ГП, производительность ГП, а, следовательно, и скорость отрисовки кадров довольно сильно повышается при пакетном методе отправки данных на ГП. Причём, чем больше размер пакетов, тем выше скорость передачи.

Поскольку объём информации об одной вершине какой-либо фигуры довольно мал (координаты, цвет), разумно их собирать в пакеты данных и отправлять на ГП в собранном виде. Однако, для большого размера пакета, а следовательно, и большей скорости передачи данных, необходимо в него упаковывать данные о нескольких примитивах, что усложняет хранение данных примитивов в процессе создания пакета, а также увеличивает количество передаваемых данных.

Вследствие чего в процессе создания данного проекта было разработано 2 разных способа отрисовки графических примитивов в процессе отрисовки кадра:

  • Последовательный – отправка на ГП информации о каждом примитиве по отдельности (частая отправка данных, но уменьшенное количество этих данных).

  • Единовременный – отправка на ГП информации о всех примитивах, присутствующих в кадре, в конце цикла отрисовки кадра на ЦП (минимальное количество отправок, в идеале одна, но с увеличенным количеством данных).