Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Современные стандарты и интерфейсы программирования компьютерной графики



Стандарт GSK

Свойства:

· Имеет видовую поверхность прямоугольной формы

· Может выводить на эту поверхность графические примитивы, возможно интерпретируя по-своему их атрибуты

· Может иметь одно или несколько логических устройств ввода

· Хранит сегменты и выполняет операции над ними.

Содержит 6 примитивов:

· Ломаная линия, которая представляет собой плоскую ломаную линию с конечным числом узлов

· Полимаркер – множество точек, помеченное одним и тем же маркером х х х х

· Текст – строка текста, состоящая из букв одного и того же шрифта, размера, цвета

· Многоугольник – плоский многоугольник с конечным числом вершин, возможно заполненный цветом/штрихом

· Массив ячеек – прямоугольная решетка, часть ячеек которой может быть заполнена цветом

· Обобщенный графический примитив, который зависит от специализации рабочей станции (примитив разработчика)

3 системы координат GKS:

· Мировые координаты

· Нормализованные координаты

· Физические координаты (координаты принтера)

GSK 3D

Расширение GKS для поддержки базовых функций в 3D.

Усовершенствовали:

· Примитивы 3D графики вывода

· Новые атрибуты вывода (2 функции)

· Поддержка 3D преобразования (9 функций)

· Новые видовые преобразования (4 функции)

· Вывод с 3Д координатных устройств (10 функций)

· Утилиты работы с матрицей 3Д преобразований (2 функции)

PHIGS

PHIGS (Programmer's Hierarchical Interactive Graphics System) - набор базовых функций 3D графики аналогичный GKS-3D, но в отличие от GKS-3D, ориентированной на непосредственный вывод графических примитивов, группируемых в сегменты, графическая информация накапливается в иерархической структуре данных. В целом PHIGS ориентирован на приложения, требующие быстрой модификации графических данных, описывающих геометрию объектов.

Language bindings

Языковые интерфейсы (Language bindings) - представление функций и типов данных функциональных графических стандартов в стандартизованных языках программирования.

CGM

CGM (Computer Graphics Metafile) - аппаратно-независимый формат обмена графической информацией. Используется для передачи и запоминания информации, описывающей изображения.

Все графические элементы могут быть описаны в текстовом исходном файле, который может быть скомпилирован в бинарный файл или в одну из двух текстовых вариантов формата. CGM предоставляет средства обмена графикой для компьютеров, позволяя двумерную графику независимо от конкретной платформы, системы, приложения или устройства. Как метафайл, т.е. файл содержащий информацию описывающую другие файлы, формат CGM обладает соответствующим функционалом для отображения содержимого, включает поддержку большого количества видов графической информации и геометрических примитивов. Вместо того, чтобы определить ясный графический формат, CGM содержит инструкции и данные для реконструкции графических компонентов для рендера конечного изображения используя объектно-ориентированный подход.

CGI

CGI (Computer Graphics Interafce) - набор базовых элементов для управления и обмена данными между аппаратно-независимым и аппаратно-зависимым уровнями графической системы.

CGRM


CGRM (Computer Graphics Reference Model) - модель стандартов в машинной графике, которая определяет концепции и взаимосоотношения применительно к будущим стандартам в машинной графике.

OpenGL

OpenGL (Open Graphics Library — открытая графическая библиотека, графическое API) — спецификация, определяющая независимый от языка программирования платформо независимый программный интерфейс для написания приложений, использующих двухмерную и трёхмерную компьютерную графику.

OpenGL является независимым к языку программирования.

Основные возможности opengl:

· Геометрические и растровые примитивы, на основе которых
строятся все объекты. Из геометрических примитивов библиотека
предоставляет: точки, линии, полигоны. Из растровых: битовый
массив (bitmap) и образ (image);

· Использование В-сплайнов для рисования кривых по опорным
точкам.

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

· Работа с цветом. opengl предоставляет программисту возможность
работы с цветом в режиме rgba (красный-зелёный-синий-альфа) или
используя индексный режим, где цвет выбирается из палитры.

· Удаление невидимых линий и поверхностей. z-буферизация.

· Двойная буферизация. opengl предоставляет как одинарную так и
двойную буферизацию.

· Наложение текстуры

· Сглаживание. Позволяет скрыть ступенчатость, что свойственна
растровым дисплеям.

· Прозрачность объектов.

· Использование списков изображений.

DirectX

DirectX (от англ. direct — прямой, непосредственный) — это набор API, разработанных для решения задач, связанных с программированием под Microsoft Windows.

В целом, DirectX подразделяется на:

· DirectX Graphics, набор интерфейсов, ранее (до версии 8.0) делившихся на:

· DirectDraw: интерфейс вывода растровой графики. (Его разработка давно прекращена)

· Direct3D (D3D): интерфейс вывода трёхмерных примитивов.

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

· DirectPlay: интерфейс сетевой коммуникации игр.

· DirectSound: интерфейс низкоуровневой работы со звуком (формата Wave)

· DirectMusic: интерфейс воспроизведения музыки в форматах Microsoft.

· DirectShow: интерфейс, используемый для ввода/вывода аудио и/или видео данных.

· DirectX Instruments — технология, позволяющая на основе мультимедийного API DirectX создавать и использовать программные синтезаторы. В отличие от DX-плагинов, такие программы могут полностью управляться по MIDI и служат главным образом не для обработки, а для синтеза звука. Технология DXi была популярна в 2001—2004 гг., особенно в программных продуктах Cakewalk, но со временем проиграла «войну форматов» технологии VST от Steinberg.

· DirectSetup: часть, ответственная за установку DirectX.

· DirectX Media Objects: реализует функциональную поддержку потоковых объектов (например, кодировщики/декодировщики)

· Direct2D: интерфейс вывода двухмерной графики

Одним из наиболее известных графических интерфейсов является OpenGL. Этот интерфейс в виде библиотеки графических функций представляет собой открытый стандарт, разработанный и утвержденный в 1992 г. девятью фирмами, среди которых были Digital Equipment Corp., Evans & Sutherland, Hewlett Packard Co., IBM Corp., Intel Corp., Silicon Graphics Inc., Sun Microsystems и Microsoft. В основу стандарта легла библиотека IRIS GL, разработанная фирмой Silicon Graphics Inc. Этот стандарт поддерживается многими операционными системами (в том числе и Windows), а также производителями графических акселераторов.

Другим известным графическим интерфейсом является DirectX с подсистемой трехмерной графики Direct3D, а также подсистемой DirectDraw, которая обеспечивает, в частности, непосредственный доступ к видеопамяти. Этот интерфейс разработан Microsoft и предназначен только для Windows.

В отличие от OpenGL, который сразу разрабатывался для функционирования с графическими ускорителями, Direct3D был изначально ориентирован на программный рендеринг. Кроме того, Direct3D фактически не является стандартом в строгом смысле этого слова – это лишь некоторый интерфейс, объявленный и полностью контролируемый компанией Microsoft.

Известны также другие разработки графических интерфейсов для видеоадаптеров. Например, интерфейс Glide, разработанный 3Dfx для графических видеоадаптеров семейства Voodoo (следует заметить, что компания 3Dfx недавно прекратила свое существование как изготовитель видеоадаптеров).

OpenGL. Современные графические ускорители (видеоадаптеры) обладают большим набором возможностей и высокой производительностью, но при этом они часто имеют и серьезные внутренние различия. Для того чтобы эффективно работать с такими ускорителями, не привязываясь к особенностям какого-либо конкретного устройства, обычно применяются библиотеки, предоставляющие некоторый унифицированный интерфейс к нему.

На сегодняшний день для персональных компьютеров существует два таких интерфейса: OpenGL, уже более 10 лет являющийся стандартом, и Direct3D, предложенный и поддерживаемый компанией Microsoft.

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

С самого начала OpenGL разрабатывался как эффективный, аппаратно- и платформенно-независимый интерфейс. Он не включает в себя специальных команд, привязанных к какой-либо конкретной операционной системе. Для выполнения операций работы с окнами и организации ввода-вывода существуют дополнительные библиотеки.

Библиотека OpenGL позволяет легко создавать объекты из геометрических примитивов (точек, линий, граней), располагать их в трехмерном пространстве, выбирать способ и параметры проектирования, вычислять цвета пикселов с использованием текстур и источников света.

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

Работа с OpenGL основывается на модели клиент-сервер. Приложение выступает в роли клиента - оно генерирует команды, а сервер OpenGL выполняет их.

Библиотека OpenGL поддерживает различные палитровые режимы, позволяет работать в режимах непосредственного задания цвета High Color и True Color.

Для облегчения работы с OpenGL, и в частности работы с окнами и вводом, удобно использовать библиотеку glut. Эта кросс-платформенная библиотека позволяет легко создавать переносимые приложения, использующие OpenGL. Библиотека glut (OpenGL Utility Toolkit) является прозрачным интерфейсом для написания переносимых программ, использующих OpenGL и взаимодействующих с оконной системой. Она позволяет писать программы на ряде языков, включая C++, Delphi.

Для рисования геометрических объектов OpenGL организует несколько буферов: буфер изображения (фрейм-буфер), буфер глубины (z-буфер), буфер трафарета и аккумулирующий буфер.

Библиотека OpenGL может выводить точки, линии, полигоны и битовые изображения. Под линией в OpenGL понимается отрезок, заданный своими начальной и конечной вершинами. Под гранью (многоугольником) подразумевается замкнутый выпуклый многоугольник с несамопересекающейся границей.

Все геометрические примитивы задаются в терминах вершин. Каждая вершина задается набором чисел.

OpenGL работает с однородными координатами (x, y, z, w). Если координата z не задана, то она полагается равной 0. Если координата w не задана, то она полагается равной единице.

В процессе построения изображения координаты вершин подвергаются различным преобразованиям (видовым, проектирования, перспективного деления и др.). В OpenGL существуют две матрицы для преобразования координат точки: матрица моделирования (modelview matrix) и матрица проектирования (projection matrix). Первая служит для задания положения объекта и его ориентации, а вторая отвечает за выбранный способ проектирования. Кроме того, существует матрица преобразования текстурных координат (texture matrix). Имеется набор различных процедур, умножающих текущую матрицу (моделирования или проектирования) на матрицу выбранного геометрического преобразования. Если последовательно указано несколько преобразований, то в результате текущая матрица будет последовательно умножена на матрицы соответствующих преобразований.

Чтобы задаваемые объекты могли быть нарисованы, необходимо задать способ проектирования. Преобразование проектирования определяет, как объекты будут проецироваться на экран и какие части объектов будут отсечены как не попадающие в поле зрения. OpenGL поддерживает два вида проектирования: параллельное и перспективное. Поле зрения при перспективном преобразовании является усеченной пирамидой. В случае параллельного проектирования полем зрения является прямоугольный параллелепипед.

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

Линия или заполненная грань может быть нарисована одним цветом (плоское закрашивание) или путем интерполяции цветов в вершинах (закрашивание методом Гуро).

Текстурирование позволяет наложить изображение на многоугольник и вывести этот многоугольник с наложенной на него текстурой, преобразованной соответствующим образом. OpenGL поддерживает одно- и двухмерные текстуры и различные способы их наложения.





Дата публикования: 2015-09-17; Прочитано: 1134 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.012 с)...