SWD Software Ltd. - официальный дистрибьютор QNX на территории России и стран бывшего СССР Операционная система реального времени QNX
Инструменты для создания надёжных встраиваемых систем и
интеллектуальных устройств любой сложности
QNX Software Systems - разработчик встраиваемой операционной системы QNX
Продукты QNX
Операционная система реального времени QNX Neutrino
Операционная система реального времени QNX4
Комплект разработчика QNX Momentics
Встраиваемые СУБД
Аппаратное обеспечение
Главная страница > Продукты > Продукты QNX > Операционная система реального времени QNX Neutrino > Графические решения > Расширенная графика Сделать страницу стартовой Послать ссылку коллеге Версия для печати

Расширенная графика

TDK-комплект для разработки сложной графики QNX Advanced Graphics представляет собой набор инструментов, позволяющий создавать двумерные и трехмерные графические среды с высоким уровнем масштабируемости, надежности и производительности и на основе индустриальных стандартов. Данный TDK-комплект содержит как средства разработки, так и компоненты среды исполнения:
  • Средства разработки:
    • статические библиотеки для 2D-рисования, управления слоями и видеозахвата;
    • библиотеки 3D-графики (с поддержкой программного интерфейса OpenGL® ES API);
    • примеры кода для разработки 2D- и 3D- графических сред.
  • Компоненты среды исполнения:
    • драйверы графических контроллеров;
    • библиотеки среды исполнения для 3D-графики (с поддержкой программного интерфейса OpenGL® ES API);
    • библиотеки среды исполнения для рендеринга шрифтов и изображений;
    • администратор графического дисплея (io-display).

Графическая среда для разработки сложной графики QNX Advanced Graphics – это не просто ещё одна система многооконных интерфейсов. Она представляет собой новый способ организации графической среды, позволяющий обеспечить максимальный уровень производительности, надежности и масштабируемости.

Возможности и преимущества

  • Сохранение режима реального времени в графических средах. Приоритетность применяется для эффективного выполнения множества 2D- и 3D-программ, которые одновременно запрашивают рендеринг изображений. Режим реального времени сохраняется автоматически, без необходимости применения специального кода или переконфигурирования системы.
  • Обеспечение максимальной производительности программ. 2D- и 3D-программы вызывают функции рисования непосредственно на аппаратном уровне. Графическая программа напрямую управляет ресурсами графического чипа, без необходимости копирования данных. Такое прямое управление обеспечивает наиболее быструю передачу данных между кодом приложения и графическим чипом.
  • Поддержка новейших функциональных возможностей графических контроллеров, в том числе команды аппаратно-ускоряемого 2D- и 3D-рисования, аппаратное копирование битовых массивов (blit) и управление слоями (при наличии аппаратной поддержки). Полный перечень 2D- и 3D-возможностей см. далее.
  • Построение высоко надежных графических сред. Как и любые другие программы в QNX, все графические программы защищены друг от друга и не могут нарушить работу других программ. Программа-администратор графического дисплея автоматически распределяет ресурсы для программ и освобождает ресурсы при завершении приложений. В случае сбоя программы ее ресурсы освобождаются автоматически, без необходимости специального кода.
  • Ускорение процесса разработки. Благодаря возможности разделить графику между различными программами, выполняемыми в защищенной памяти и в режиме реального времени, несколько разработчиков могут беспрепятственно работать одновременно. Программы можно отлаживать по отдельности, что позволяет быстрее обнаруживать ошибки.
  • Широкая масштабируемость. Оконные системы (например, Photon™), могут быть интегрированы с другими 2D- и 3D- программами, что позволяет компаниям-системным интеграторам реализовывать возможности более высокого уровня (например, просмотр веб-страниц, работа с электронной почтой и т.д.) одновременно с выполнением других 2D- и 3D- программ. Такая интеграция может быть выполнена как на одном слое (2D- и 3D-программы), так и на нескольких слоях, часть из которых может управляться оконной системой.
  • Уменьшение необходимых ресурсов системы. Обеспечивается возможность применения минимального набора графических компонентов для реализации системы.
  • Поддержка промышленных стандартов. TDK-комплект "Сложная графика" поддерживает программный интерфейс OpenGL® ES, сертифицированный независимой организацией Khronos Group. Компания QNX Software Systems входит в состав этой организации и способствует развитию и продвижению стандарта OpenGL ES.
  • Интеграция с существующими решениями. В настоящее время существует множество графических решений, начиная от собственных разработок фирм до решений, предлагаемых сторонними компаниями. Если собственное или поставленное третьей стороной графическое решение интегрируется с TDK-комплектом "Сложная графика", то полученное комбинированное решение также обеспечивает режим реального времени и высокую надежность.
  • Графические решения с большим инновационным потенциалом. Благодаря поддержке OpenGL® ES, продукты QNX позволяют реализовывать такие стандарты, как JSR 239 (Java-спецификация для 3D-графики). Поддержка формата EGL, который является графической основой для технологии OpenGL® ES, означает, что технологии будущего (например, OpenVG, OpenML) и связанные с ними спецификации (JSR 226) будут так же легко применимы.

Что можно создавать с помощью TDK-комплекта "Сложная графика"?

  • 2D- навигационная система с использованием альфа-смешивания для отображения меню и предупреждающих сообщений.
  • Использование нескольких графических слоев.

  • 3D-навигационная система на основе OpenGL® ES.
  • Поддержка вращающихся шрифтов.

  • 3D- навигационная система на основе OpenGL® ES.
  • Веб-браузер, встроенный в правую часть экрана для отображения информации, связанной с выбранным объектом.

  • 2D-дисплей монитора с сенсорным экраном и высокоскоростным отображением графиков.

Поддержка 2D-возможностей:

  • Небольшие и быстродействующие примитивы 2D-графики:
    • прямоугольники, линии, многоугольники, графические массивы (blitting);
    • альфа-смешивание, рирпроекция (chroma-key), растровые операции;
    • ускоренный альфа-мепинг;
    • и др.
  • Поддерживаемые форматы:
    • BMP, JPEG, PNG, GIF
    • сглаживание при изменении размеров и масштабировании.
  • Поддерживаемые шрифты:
    • TrueType;
    • Adobe Type 1 и Type 2;
    • векторные шрифты Bitstream (в том числе китайские и японские).
  • Поддерживаемые операции обработки шрифтов:
    • сглаживание;
    • вращение;
    • контуры/обрисовки;
    • кодировка UTF-8;
    • масштабирование шрифтов;
    • хинтинг/кернинг.
  • API для видеозахвата:
    • масштабирование аппаратными средствами (увеличение/уменьшение);
    • системы RGB/YUV.
  • API для управления слоями (при наличии аппаратной поддержки):
    • возможность устанавливать соответствие между поверхностью рисования и слоем;
    • упорядочивание слоев и возможность включения и отключения слоев;
    • альфа-смешивание и рирпроекция между слоями;
    • настройка размера, масштаба окна просмотра источника и приемника; управлением панорамированием.
  • 2D-графические драйверы с аппаратным ускорением:
    • аппаратное ускорение графики, при наличии такой возможности; если это невозможно, применяется программное ускорение;
    • например, для микросхемы Coral P/B/PA, следующие 2D-функции выполняются с аппаратным ускорением:
      • линии, прямоугольники;
      • линии по алгоритму Брезенхама (Bresenham);
      • сглаживание линий и многоугольников;
      • заполненные многоугольники (с отсечением);
      • растровые изображения (с прозрачностью);
      • блитирование, масштабированное блитирование (увеличение и уменьшение);
      • поддержка режима прямого управления шиной PCI (только для Coral P/PA);
      • альфа-смешивание;
      • рирпроекция;
      • 16 операций для работы с растровыми изображениями;
      • поддержка жирных линий;
      • альфа-мэпинг (смешивание);
      • соединения встык и соединения с косой кромкой (с отсечением);
      • толщина линии до 32 пикселей;
      • поддержка прерываний для кадровой синхронизации и заполнения списков отображения;
      • аппаратная поддержка курсора.

Поддержка 3D-возможностей:

  • OpenGL® ES API Common Profile, версия 1.0:
    • API OpenGL® ES – это расширение OpenGL®, разработанное с учётом требований по использованию памяти во встраиваемых системах. Этот программный интерфейс соответствует промышленным стандартам, является открытым и не требует лицензионных выплат. Поддержку данной спецификации выполняет корпорация Khronos (www.khronos.org).
    • Для обеспечения масштабирования поддерживаются дополнительные расширения.
  • Компания QNX предагает идеальную реализацию API OpenGL® ES согласно методологии разработки программного обеспечения типа "clean room".
  • QNX-реализация OpenGL® ES 1.0 была полностью сертифицирована корпорацией Khronos Group в ноябре 2005 г. (подробные сведения о сертификации можно найти на веб-сайте корпорации Khronos).
  • 3D-графические драйверы с аппаратным ускорением:
    • При возможности используется 3D-графический контроллер с аппаратным ускорением. Если это не возможно, используется программное 3D-ускорение.
    • Например, на чипе Coral P/B/PA, кроме функций аппаратного 2D-ускорения, есть следующие функции аппаратного 3D-ускорения:
      • Z-буферы;
      • 3D-точка, 3D-линия, 3D-треугольник;
      • наложение текстур с билинейной фильтрацией, перспективная коррекция:
        • GL_LINEAR, GL_NEAREST
        • затемнение по методу Гуро;
      • “ножницы” (отсечение);
      • низкоуровневый драйвер имеет прямой доступ к структуре состояний OpenGL ES;
      • сглаживание;
      • альфа-смешивание.

Архитектура TDK-комплекта "Сложная графика"

TDK-комплект для разработки сложной графики представляет собой набор инструментов для создания и внедрения пользовательских интерфейсов приложений. Ядром комплекта является технология Graphics Framework (GF). Эта технология обеспечивает сервисные функции, позволяющие графическому программисту создавать самые разнообразные интерфейсы: от миниатюрных 2D-сред до полнофункциональных 2D- и 3D-сред, в том числе веб-браузеров и почтовых клиентов.

Архитектура платформы Graphics Framework позволяет программам непосредственно взаимодействовать с оборудованием, что обеспечивает более высокую производительность и скорость работы во встраиваемых средах с ограниченными ресурсами. Это достигается благодаря тому, что платформа Graphics Framework обеспечивает прямой доступ к графическим драйверам (т.е. при рендеринге не требуется обмен сообщениями или переключение контекстов), а также применяет аппаратное ускорение. Таким образом, платформа Graphics Framework идеально подходит для встраиваемых сред, где она может служить в качестве базового графического уровня для решения любых задач: от реализации простого полноэкранного пользовательского интерфейса до построения сложной системы управления экранными окнами в графических пользовательских интерфейсах для множества приложений. Кроме того, эта платформа может служить в качестве базового уровня для переноса существующих пользовательских интерфейсов.

Для реализации 3D-графики во встраиваемых системах TDK-комплект "Сложная графика" поддерживает спецификацию API OpenGL® ES 1.0, разработанную специально для встраиваемых приложений. В реализации QNX поддерживается профиль Common profile и уровни интерфейса платформы EGL.

Ниже приводится пример типичного приложения, построенного с помощью TDK-комплекта "Сложная графика" и на основе платформы Graphics Framework. Необходимо отметить, что все компоненты являются необязательными, за исключением графического драйвера (devg) и самого кода приложения (который статично связан только с необходимыми функциями из библиотек TDK-комплекта "Сложная графика").

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

Другие компоненты, используемые в приведенном выше примере, включают следующие функции:

  • ввод данных с помощью клавиатуры или мыши, управляемый администратором ввода данных (поставляется с BSP-пакетом для целевой системы);
  • рендеринг шрифтов, управляемый системой рендеринга шрифтов (например, библиотекой Bitstream Font Fusion, которая поставляется в составе TDK-комплекта "Сложная графика");
  • поддержка изображений с помощью специальной библиотеки ( поставляется в составе TDK-комплекта"Сложная графика");
  • поддержка библиотеки OpenGL® ES (поставляется в составе TDK-комплекта "Сложная графика").

Хотя платформа Graphics Framework предназначена для полноэкранных пользовательских интерфейсов, она может работать одновременно с несколькими потоками, несколькими приложениями и даже, при необходимости, с 2D-приложениями и приложениями на основе OpenGL® ES вместе с графическими приложениями Photon.

Платформа Graphics Framework построена на модели "клиент-сервер", при этом процесс io-display работает в качестве сервера и управляет ресурсами устройства (например, памятью, слоями) и доступом к оборудованию. Клиент (графическое приложение) взаимодействует непосредственно с оборудованием. Клиенты получают блокировки (мутексы в разделяемой памяти) посредством вызова gf_draw_begin(), для того чтобы обеспечить синхронизацию, т.е. предотвратить одновременный доступ нескольких потоков или приложений к одному аппаратному ресурсу. Процесс io-display обеспечивает повышенную надежность при помощи механизма обнаружения аварийного завершения клиента, освобождения ресурсов и освобождения разделяемого мутекса, если он удерживался аварийно завершенным клиентом. Разделяемый мутекс отдается ожидающему потоку с наивысшим приоритетом, чтобы в первую очередь обеспечить прорисовку графики программы с наивысшим приоритетом.

Доступ приложений на основе платформы Graphics Framework ко всему оборудованию регулируется процессом io-display. Кроме того, этот управляющих процесс распределяет всю видеопамять и выполняет завершение приложений (как нормальное, так и аварийное) путем освобождения выделенной памяти и, при необходимости, освобождения заблокированного оборудования. Все это управление может быть “невидимым” для клиентских графических программ, поскольку все взаимодействия обрабатываются внутри библиотеки.

На приведенной ниже диаграмме показано взаимодействие между процессом io-display и тремя следующими программами (клиентами):

  • графическая среда Photon (веб-браузер, почтовая программа и т.д.);
  • специализированный графический пользовательский интерфейс, использующий 2D-библиотеку третьей стороны, которая обращается к библиотеке платформы Graphics Framework TDK-комплекта "Сложная графика";
  • приложение на основе OpenGL® ES API.

Процесс управления графическим вводом-выводом io-display

Заметим, что все три программы загружаются в разделяемый объект графического драйвера (devg) и напрямую управляют графическим оборудованием. Программы по очереди используют графический драйвер, запрашивая и получая мутекс, управляемый процессом io-display. Порядок исключительного доступа определяется приоритетом запрашивающей программы.

После запуска управляющего процесса io-display приложения могут использовать библиотеку платформы Graphics Framework (libgf) и библиотеки OpenGL® ES для получения графического контекста и вывода графических данных на устройство.

Графические платформы приложений производства третьих сторон или собственной разработки могут легко использоваться в сочетании с TDK-комплектом "Сложная графика". Возможна интеграция с любой из поддерживаемых функций, включая 2D-рисование, 3D-рисование, поддержку изображений и шрифтов. Простые интерфейсные функции позволяют агрегировать операции рисования и в то же время получать высокую производительность и режим реального времени, обеспечиваемый платформой Graphics Framework.

Компоненты графической платформы Graphics Framework

В графической платформе Graphics Framework применяются следующие базовые компоненты, которые служат для иерархического и разбиения графической среды:

  • устройства;
  • дисплеи;
  • слои;
  • поверхности;
  • контексты.

Устройства и дисплеи – это логические объекты, представляющие аппаратные компоненты, управляемые платформой Graphics Framework. Устройство – это единица графического оборудования, управляемая процессом io-display посредством соответствующего драйвера devg-*. Для каждого устройства имеется запись в /dev/io-display.

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

Слои представляют собой область памяти, отображаемой на дисплее. Некоторые виды современного графического оборудования поддерживают использование нескольких слоев. В графической платформе Graphics Framework все устройства имеют хотя бы один слой (слой 0). Слои увеличивают гибкость отображения информации на дисплее. Например, вы можете поместить окно с географической картой на фоновом слое, а элементы управления графическим пользовательским интерфейсом пользователя с линейкой прокрутки карты на переднем слое. Таким образом, приложение позволяет прокручивать окно карты плавно без необходимости перерисовки интерфейса, что устраняет мерцание и снижает нагрузку на процессор. Слои полезны во всех случаях, когда нужно вывести текст или графический пользовательский интерфейс поверх какой-либо визуальной информации.

На следующем рисунке показаны взаимосвязи между устройством, дисплеями и слоями.

Иерархия устройств, дисплеев и слоев

Поверхность – это область памяти, в которую библиотека платформы Graphics Framework может выводить графические данные. Если поверхность соединена со слоем (и этот слой является видимым), то вся отображаемая на поверхности информация появляется на дисплее этого слоя. Поверхность должна иметь пиксельный формат, поддерживаемый данным слоем, чтобы выводимые на поверхности объекты отображались корректно. Как правило, одному слою соответствует только одна поверхность. Исключением являются планарные данные, например планарные данные YUV, широко используемые для видеозахвата, для которого требуется три поверхности (одна для каждого видеокомпонента).

По умолчанию платформа Graphics Framework размещает поверхность в видеопамяти для обеспечения максимальной производительности. Однако при создании поверхности ее можно оптимизировать для процессорного доступа, что, как правило, означает использование оперативной памяти.

Контекст представляет собой структуру, которая сохраняет информацию об объекте отображения между вызовами функций отображения (например, ширина пера, цвета переднего и заднего фона, рамка отсечения). Контекст предназначается для поверхности и является аргументом для всех функций рисования. Поверхность может использоваться для 2D-рисования или для 3D-рисования с использованием технологии OpenGL ES. Поверхности могут быть объединены на нескольких слоях до их отображения.

На следующем рисунке показаны взаимосвязи между контекстами, поверхностями и слоями.

Контексты, поверхности и слои

Используя различные комбинации дисплеев, слоев, поверхностей и контекстов рисования, можно получать очень сложные изображения из простых приложений. Приведенный ниже пример системы 2D-навигации изображает графическую среду, которая состоит из четырех слоев, из них используются три: один для отображения 2D-карты, второй – для вывода меню и сенсорного экрана и третий – для вывода предупреждающих сообщений. Разработчик системы может построить эту графическую среду либо как одну цельную программу, либо в виде трех отдельных программ. Для совмещения изображений со всех слоев используется цветовая рирпроекция и альфа-смешивание.

Пример системы 2D-навигации

Таким образом, добавление 3D-возможностей так же просто, как и разработка на основе OpenGL® ES, а обновление 2D-программы на 3D-версию или использование программы на основе OpenGL® ES на том же слое, где находится 2D-графика (посредством разделения экрана на сегменты), не представляет никакой сложности.

Кроме того, добавить веб-браузер (например, разработанный с помощью TDK-комплекта TDK-комплекта "Веб-браузер") так же просто, как запустить систему QNX Photon™ на графическом слое.

Состав комплекта

  • Исполняемые файлы:
    • библиотеки OpenGL ES и 2D-библиотеки для архитектур PPC, X86, SH;
    • управляющий процесс io-display;
    • администраторы для поддержки одновременного выполнения программ 3D, 2D и Photon;
    • библиотека загрузки изображений, поддерживающая различные форматы:
      • JPEG, PNG, BMP, GIF;
    • библиотеки шрифтов:
      • TrueType, Bitmap, Font Fusion (векторные шрифты Bitstream) (образцы шрифтов поставляются в комплекте разработчика QNX Momentics);
    • графический драйвер Fujitsu Coral для Coral B/P/PA (список поддержки графических чипов расширяется);
    • образцы приложений, предварительно скомпилированные для тестирования 2D- и 3D- графики.
  • Документация:
    • руководство по платформе Graphics Framework;
    • руководство по API Font Fusion.
  • Конфигурационные текстовые файлы:
    • конфигурационные файлы для настройки видеоустановок (инициализация графических чипов и т.д.);
    • средства адаптации для различных комбинаций дисплеев (без необходимости изменения исходного кода).
  • Примеры исходных текстов:
    • 2D-образцы: рисование прямоугольника, загрузка и вывод изображения, загрузка и вывод текста и т.д.;
    • управление слоями: включение/выключение слоев, изменение цвета рирпроекции;
    • 3D-образцы: массивы вершин, карты текстур и т.д.;
    • и др.

Если в состав конечного продукта включается графическая оболочка Photon, то для каждой среды исполнения требуется лицензия на Photon. TDK-комплект "Веб-браузер" (Web Browser Technology Development Kit) поставляется отдельно.

Системные требования:

  • профессиональный комплект разработчика QNX Momentics® – версия 6.3 и выше;
  • ОСРВ QNX Neutrino® – версия 6.3 и выше (среда исполнения);
  • поддерживаемое оборудование:
    • целевые системы на основе архитектур X86, PPC и SH4;
    • аппаратная поддержка ускоренной графики:
      • Fujitsu Coral-B/P/PA
       
Рассказать друзьям:

     Рейтинг@Mail.ru