Скачиваний:
82
Добавлен:
16.07.2022
Размер:
1.8 Mб
Скачать
      1. Последовательный способ отрисовки

Способ последовательной отрисовки кадра заключается в передаче на видеокарту данных о каждом примитиве в кадре по очереди. В процессе выполнения функции отрисовки примитива рассчитываются координаты его вершин и их цвета, после чего происходит их отправка на ГП. После выхода из функции начинается выполнение функции отрисовки следующего примитива, либо расчёт следующего кадра.

Алгоритм работы данного способа можно расписать следующим образом:

  1. Вызов функции отрисовки. В начале выполнения функции создаётся небольшой буфер данных, в который будут помещены данные о полигонах примитива.

  2. Расчёт полигонов. Расчёт и запись в буфер координат вершин полигонов примитива и их цветов.

  3. Отправка содержимого буфера на ГП для отрисовки примитивов в кадр.

  4. Выход из функции отрисовки и вызов функции отрисовки следующего примитива либо начало формирования следующего кадра.

Схема алгоритма представлена на рисунке 1.4.

      1. Единовременная отрисовка

Единовременный способ отрисовки направлен на минимизацию количества отправок данных на видеокарту для увеличения скорости передачи данных в следствии увеличения размеров пакетов. Заключается он в упаковке данных о нескольких (идеальный вариант – всех) примитивах в кадре в один большой пакет для отправки на видеокарту и последующей отрисовки их в кадр.

Рисунок 1.4 – Схема алгоритма последовательной отрисовки

В отличие от последовательной отрисовки, отправка данных на видеокарту происходит не в конце функции отрисовки примитива, а в конце формирования кадра и расчёта всех полигонов всех примитивов, либо при достижении предела заполненности буфера для хранения данных о полигонах до их отправки на видеокарту.

Алгоритм работы данного способа можно разделить на следующие шаги:

  1. Создание общего буфера, в который будут помещаться все данные о вершинах полигонов примитивов.

  2. Вызов функции отрисовки примитива. В этот момент проверяется заполненность общего буфера и, если там нет места для рассчитываемого примитива, происходит отправка данных из буфера на ГП и его освобождение.

  3. Расчёт полигонов. Расчёт и запись координат вершин и их цветов в общий буфер.

  4. Выход из функции отрисовки.

  5. Вызов функции отрисовки следующего примитива, если такая есть.

  6. В конце расчёта кадра отправка содержимого общего буфера на видеокарту.

Схема алгоритма представлена на рисунке 1.5.

Рисунок 1.5 – Схема алгоритма единовременной отрисовки

  1. Реализация и тестирование методов отрисовки

Для того, чтобы понять, какой из методов отрисовки будет более эффективным с точки зрения частоты кадров, необходимо создать несколько тестовых примеров различной сложности с использованием каждого из методов и запустить каждый из них на целевой машине – МЦСТ «Эльбрус-401».

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

Алгоритм тестирования частоты кадров можно представить следующим образом:

  1. Создание образа БагрОС-4000 с тестовым примером и установленной настройкой по выводу частоты кадров на экран

  2. Загрузка созданного образа в память МЦСТ «Эльбрус-401»

  3. Запуск целевой машины

  4. Фиксирование частоты кадров при работе тестового примера

Тестирование же с точки зрения используемой программой памяти проводится с использованием инструментальной машины, так как БагрОС-4000 подобного инструментария не предоставляет. Для анализа используемого во время работы программы объёма памяти во время запуска тестовых примеров на инструментальной машине использовалась программа htop. Пользовательский интерфейс данной программы во время тестирования одного из примеров приведён на рисунке 2.1

Рисунок 2.1 – Интерфейс программы htop во время тестирования

Выделенная строка на рисунке 2.1 – исследуемый процесс. В данном случае объём потребляемой виртуальной памяти – 84272 Кб.