Слайд 1Компьютерная
графика
Техническое и программное обеспечение компьютерной графики
Слайд 22.1 Графическая система
Система компьютерной графики является прежде всего вычислительной системой
и, как таковая, включает все компоненты вычислительной системы общего назначения:
процессор;
память;
буфер кадра;
устройства вывода;
устройства ввода.
Слайд 3Структура графической системы
Слайд 4Устройства ввода
В большинстве графических систем в качестве
хотя бы одного из возможных устройств ввода используется обычная алфавитно-цифровая
клавиатура. Но более специфическими устройствами, предназначенными для ввода именно графической информации, являются мышь, джойстик и планшет.
Слайд 5Устройства вывода изображений
микрофотографии дисплея
Слайд 6Принцип работы ЖКД
Работа ЖКД основана на явлении поляризации светового потока.
Известно, что так называемые кристаллы поляроиды способны пропускать только ту
составляющую света, вектор электромагнитной индукции которой лежит в плоскости, параллельной оптической плоскости поляроида. Для оставшейся части светового потока поляроид будет непрозрачным. Таким образом поляроид как бы "просеивает" свет, данный эффект называется поляризацией света.
Слайд 9Буфер кадра
Все современные видеоадаптеры формируют растровое изображение, для хранения которой
используется двухмерный массив пикселей, который располагается в видеопамяти. Этот участок
памяти называется буфером кадра (Frame buffer).
Растровое изображение - изображение, представляющее собой сетку пикселей или точек цветов (обычно прямоугольную) на компьютерном мониторе, бумаге и других отображающих устройствах и материалах.
Слайд 10Буфер кадра
Например, буфер глубиной 1 бит позволяет выводить только двухградационное
изображение, а буфер глубиной 8 бит может выводить изображение. Состоящее
их элементов 28=256 цветов.
Размер буфера кадра определяет, одну из главных характеристик графической системы – разрешающую способность (разрешение).
Буфер кадра (Frame buffer) – это отдельная область памяти, в которой хранится массив кодов, определяющих засветку пикселей на экране.
Глубина (depth) буфера кадра характеризует количество бит информации, определяющих засветку каждого отдельного пикселя, в частности, количество цветов, которое может быть представлено на экране данной системы.
Слайд 11Пиксель (англ. Pixel – PICture’S Element) - это мельчайшая единица
изображения в растровой графике.
Представляет собой неделимый объект прямоугольной (квадратной) формы,
обладающий определенным цветом, градацией серого или прозрачностью.
От количества пикселей в изображении зависит его детализация.
Пиксель (англ. Pixel – PICture’S Element) - это мельчайшая единица изображения в растровой графике.
Представляет собой неделимый объект прямоугольной (квадратной) формы, обладающий определенным цветом, градацией серого или прозрачностью.
От количества пикселей в изображении зависит его детализация.
Слайд 12Количество пикселов - разрешение. Может указываться отдельно количество пикселов по
ширине и высоте (1024*768, 640*480,...) или же, редко, общее количество
пикселей (часто измеряется в мегапикселах)
Количество используемых цветов или глубина цвета (эти характеристики имеют следующую зависимость: N = 2I, где N - количество цветов, а I - глубина цвета);
Цветовое пространство (цветовая модель) RGB, CMYK, XYZ, YCbCr и др.
Основные характеристики изображения
Слайд 13Разрешение
Разрешение – величина, определяющая количество точек (элементов растрового изображения) на единицу площади
(или единицу длины).
Разрешение – это степень детализации изображения, число пикселей
(точек), отводимых на единицу площади.
Поскольку изображение можно рассматривать применительно к различным устройствам, то следует различать:
разрешение оригинала
разрешение экранного изображения;
разрешение печатного изображения.
Слайд 14Разрешение оригинала
Разрешение оригинала определяется при вводе изображения в компьютер и
измеряется в точках на дюйм (dots per inch - dpi).
Например,
300 dpi означает, что в квадратный дюйм изображения покрывается растровой сеткой 300x300 и после сканирования, изображение соответствующее, квадратному дюйму будет состоять из 90 000 пикселей.
Для получения на экране изображения близкого к размеру оригинала обычно использует разрешения 72-75 dpi. Для вывода изображения в дальнейшем на печать и распознавания текста рекомендуется устанавливать разрешении 300-600 dpi.
Слайд 15Разрешение экранного изображения
Для экранных копий изображения элементарную точку растра принято
называть пикселем (pixel). Для измерения разрешения экранного изображения, кроме dpi,
используют единица измерения ppi (pixel per inch).
Размер пикселя, а значит и разрешение экранного изображения, варьируется в зависимости от выбранного разрешения экрана (из диапазона стандартных значений), разрешения оригинала и масштаба отображения.
Слайд 16Разрешение печатного изображения
При выводе на печать пиксели изображения представляются полутоновыми
ячейками, а не точками физического растра печатающего устройства. Меняя заполнение
полутоновых ячеек печатными точками, можно имитировать градации яркости пикселей изображения.
Линейный растр – это просто способ логической организации физического растра. Частота линейного растра или количество полутоновых ячеек на единицу длины называется линиатурой и измеряется в линиях на дюйм (line per inch, lpi).
Слайд 17Разрешение различных процессов
Для обозначения разрешающей способности различных процессов преобразования изображений
(сканирование, печать, растеризация и т. п.) используют следующие термины:
dpi (англ. dots per inch) — количество
точек на дюйм.
ppi (англ. pixels per inch) — количество пикселей на дюйм.
lpi (англ. lines per inch) — количество линий на дюйм, разрешающая способность графических планшетов (дигитайзеров).
spi (англ. samples per inch) — количество семплов на дюйм; плотность дискретизации (англ. sampling density), в том числе разрешение сканеров изображений.
Слайд 18Глубина цвета
Глубина цвета (англ. color depth) - количество информации для
представления одного цвета. Измеряется в bpp - bits per pixel
(англ. бит на пиксель). Типичные значения: 1 (монохромное изображение), 8, 16, 24, 32.
Слайд 192.2 Стандарты компьютерной графики
В 1974 г. в США был создан комитет
по стандартизации машинной графики GSPC в АСМ/SIGGRAPH. В 1975 г. в
ФРГ в Институте стандартов был создан подкомитет по машинной графике - DIN-NI/UA-5.9. ъ
В 1977 г. в международной организации по стандартизации (ISO) была создана рабочая группа TC97/SC5/WG2 "машинная графика" .
Важную роль в разработке методологии стандартизации машинной графики сыграла конференция в Сейлаке (Франция), организованная графическим подкомитетом WG 5.2 IFIP в 1976 г.
На конференции были сформулированы и обсуждены основные условия и проблемы стандартизации. Было установлено, что основная
цель стандартизации - переносимость графических систем, которая достигается стандартизацией интерфейса между графическим ядром системы (базовой графической системой), реализующим собственно графические функции, и моделирующей системой - проблемно-ориентированной прикладной программой, использующей функции графического ядра.
Базовая система должна обладать:
независимостью от вычислительных систем;
независимостью от языков программирования;
независимостью от области применения;
независимостью от графических устройств.
Слайд 20Структура прикладной графической системы
Слайд 21
Процесс преобразования информации при выполнении вывода может быть представлен состоящим
из следующих этапов:
1. Модельные преобразования. Проблемно-ориентированный уровень из геометрических моделей отдельных
объектов, задаваемых в собственных локальных системах координат, формирует описание совокупного объекта в некоторой единой (мировой) системе координат. Описание совокупного объекта подается в графическую систему.
2. Нормализующие преобразования. Графическая система переводит описание из мировой, вообще говоря произвольной, системы координат в т.н. нормализованные координаты устройства, имеющие фиксированные пределы изменения координат, например, от 0.0 до 1.0.
3. Преобразования сегментов. Если графическая система предоставляет средства манипулирования отдельными подкартинами изображения (часто именуемыми сегментами), например, для независимого размещения отдельных самостоятельных частей изображения, то могут потребоваться такие преобразования.
4. Видовые преобразования. В случае 3D описания изображения и 2D устройства вывода необходимо выполнить проецирование изображения на заданную картинную плоскость. Наоборот, при 2D сцене и 3D устройстве вывода необходимо выполнить преобразование, связанное с размещением изображения. При выполнении этих преобразований, естественно, может потребоваться выполнение отсечения частей изображения. После этого этапа по сути дела готово описание изображения в некоторой аппаратно-независимой форме, пригодной для вывода на любое устройство.
5. Преобразование рабочей станции. Для выполнения вывода на конкретное устройство необходимо преобразование данных из аппаратно-независимой формы в координаты устройства.
Слайд 22Процесс преобразования информации при выполнении вывода может быть представлен состоящим
из следующих этапов:
Процесс преобразования информации при выполнении вывода может быть
представлен состоящим из следующих этапов:
Слайд 23Концептуальная модель графической системы
Штриховые линии на нем обозначают интерфейсы,
при стандартизации которых может быть обеспечена переносимость.
Верхний уровень стандартизации -
IGES предназначен для обеспечения мобильности компонент САПР.
Средний уровень стандартизации - уровень базового графического пакета (GKS) определяется выбором базовых функций системы. Этот интерфейс делает базовую графическую систему независимой от области применения.
Нижний уровень стандартизации - уровень связи с виртуальным графическим устройством (CGI) зависит от выбора примитивов ввода/вывода, являющихся абстракцией возможностей устройств. Этот интерфейс делает базовую графическую систему аппаратно-независимой.
Слайд 24Верхний слой – клиентские API
GDI, DirectDraw, Direct3D, OpenGL, GDI+, WPF
используются
прикладными программами
находятся в адресном пространстве приложения
Средний слой – так называемый
Graphics Engine (графический движок)
часть ядра ОС
содержит сотни функций, используемых верхним слоем
Нижний слой – драйвер устройства
осуществляет непосредственное взаимодействие с графическим устройством
используется средним слоем для доступа к устройству
Многоуровневая архитектура графической подсистемы
Слайд 252.3 Графические интерфейсы
Интерфейс между прикладной программой и графической системой
— это множество функций, которые в совокупности образуют графическую библиотеку.
Спецификация этих функций и есть то, что мы называем интерфейсом прикладного программирования (API — application programmer's interface).
Модель системы прикладного программирования:
Слайд 26Графические интерфейсы
Для программиста, занимающегося разработкой прикладной программы, существует только
API, и он избавлен, таким образом, от необходимости вникать в
подробности работы аппаратуры и программной реализации функций графической библиотеки. С точки зрения прикладного программиста те функции, к которым он обращается через API, должны соответствовать концептуальной модели описания изображения.
API определяет функциональность, которую предоставляет программа (модуль, библиотека), при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована.
Использование API позволяет разработчикам программ делать их универсальными, независимыми от низкоуровневых команд конкретного графического адаптера.
Интерфейс прикладного программирования (англ. Application Programming Interface, API) — набор готовых констант, структур и функций, используемых при программировании пользовательских приложений и обеспечивающих правильное взаимодействие между пользовательским приложением и операционной системой.
Слайд 27Элементарные графические функции
В состав мощного пакета API может входить несколько
сотен функций, а потому желательно сразу же разделить их на
категории:
Функции описания примитивов (primitive functions) определяют объекты нижнего уровня иерархии – примитивы, - которые способна отображать графическая система. В большинстве графических API имеются такие примитивы, как точки, отрезки прямых линий, многоугольники, пиксели, текст и различного рода криволинейные отрезки и участки криволинейных поверхностей. Для описания примитива требуется определить его положение. Например, прямоугольник задается через положения его углов, а сфера определяется через положение ее центра и радиус.
Функции задания атрибутов определяют, как будут выглядеть отображаемы объекты, т.е. атрибуты определяют способ вывода объектов на экран. Функции задания атрибутов (attribute functions) позволяют прикладному программисту выполнять широкий круг операций настройки изображения – от выбора цвета до указания образца заливки внутренней области многоугольника или шрифта для надписей на графике.
Функции визуализации (viewing functions) определяют параметры используемой модели синтезированной камеры, с помощью которой создается видимое изображение. От прикладного программиста требуется выбрать положение и ориентацию камеры во внешней системе координат и параметры объектива, в частности фокусное расстояние. Эти параметры позволяют правильно построить изображение и отсечь те объекты, которые оказываются вне поле зрения, чтобы не тратить времени на их обработку.
Функции источников света. Источник света характеризуется положением, интенсивностью и цветом излучения и его направленностью. В составе большинства API имеются функции для задания такого рода параметров, причем на сцене может присутствовать несколько источников света с разными характеристиками.
Функции задания свойств материалов объектов. Определяют оптические свойства материалов поверхностей объектов.
Функции геометрических преобразований (transformation functions) позволяют выполнять различные преобразования объектов – поворот, плоскопараллельный перенос, масштабирование и т.п.
Функции ввода графической информации (input functions) позволяют создавать интерактивные приложения. Эти функции играют роль промежуточного звена между устройствами ввода, такими как клавиатура, мышь, планшеты разного рода, дигитайзеры, и прикладной программой.
Специальные управляющие функции (control functions), которые позволяют управлять процессом выполнения программы, взаимодействовать с операционной системой, инициализировать приложение и обрабатывать ошибки других графических функций.
Слайд 28К API операционных систем относятся:
POSIX
Windows API
Cocoa
Linux Kernel API
OS/2 API
Amiga ROM
Kernel
Отличия в API различных операционных систем существенно затрудняют перенос приложений
между платформами.
Существуют различные методы обхода этой сложности:
написание «промежуточных» API (API графических интерфейсов Qt, Gtk, и т. п.)
написание библиотек, которые отображают системные вызовы одной ОС в системные вызовы другой ОС (такие среды исполнения, как Wine, cygwin, и т. п.)
введение стандартов кодирования в языках программирования (например, стандартная библиотека языка C)
написания интерпретируемых языков, реализуемых на разных платформах (sh, python, perl, php, tcl, Java и т. д.)
К API операционных систем относятся:
POSIX
Windows API
Cocoa
Linux Kernel API
OS/2 API
Amiga ROM Kernel
Отличия в API различных операционных систем существенно затрудняют перенос приложений между платформами.
Существуют различные методы обхода этой сложности:
написание «промежуточных» API (API графических интерфейсов Qt, Gtk, и т. п.)
написание библиотек, которые отображают системные вызовы одной ОС в системные вызовы другой ОС (такие среды исполнения, как Wine, cygwin, и т. п.)
введение стандартов кодирования в языках программирования (например, стандартная библиотека языка C)
написания интерпретируемых языков, реализуемых на разных платформах (sh, python, perl, php, tcl, Java и т. д.)
Слайд 29Перечень API графических интерфейсов
К API графических интерфейсов относятся:
OpenGL
OpenVG
PHIGS
VRML
JAVA-3D.
X11
Qt
GTK
Motiff
Tk
GDI
GDI+
Direct3D (часть
DirectX)
DirectDraw (часть DirectX)
Zune
SDL
Слайд 30OpenGL
Включает более 250 функций для рисования сложных трёхмерных сцен из
простых примитивов. Используется при создании компьютерных игр, САПР, виртуальной реальности, визуализации в научных
исследованиях. На платформе Windows конкурирует с DirectX.
OpenGL (Open Graphics Library) — открытая графическая библиотека, графический API) — спецификация, определяющая независимый от языка программирования платформонезависимый программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.
Слайд 31OpenGL
1992 г. – разработана первая версия пакета OpenGL (Open Graphics
Library - открытая графическая библиотека) как аппаратно-независимая версия пакета GL.
Разработчиками OpenGL являются крупнейшие фирмы-разработчики как оборудования, так и программного обеспечения: Silicon Graphics, Inc., Microsoft, IBM Corporation, Sun Microsystems, Inc., Digital Equipment Corporation (DEC), Evans & Sutherland, Hewlett-Packard Corporation, Intel Corporation и Intergraph Corporation.
Разработана специально для эффективной обработки трехмерных данных, но может работать и с описаниями двумерных сцен как с частным случаем трехмерного изображения, где все значения координаты z равны нулю.
Программы, написанные с помощью OpenGL, можно переносить практически на любые аппаратные (персональный компьютер, графическая станция или суперкомпьютер) и программные платформы (Unix, Linux, SunOS, IRIX, Windows, MacOS, PlayStation3, Google Android и другие), получая при этом одинаковый результат.
Существуют привязки пакета OpenGL к языкам C(C++), Ada и Fortran.
Основная сфера использования – при разработке CAD-систем и научных приложений, а также компьютерных игр (Quake).
Вспомогательные библиотеки, расширяющие возможности стандартной библиотеки OpenGL:
GLU (Graphics Utility Library) - библиотека графических утилит , которая включает функции формирования часто встречающихся сложных объектов (цилиндрических форм, сферических объектов, криволинейных поверхностей).
GLUT (GL Utility Toolkit) - библиотека, отвечающая за взаимодействие с системой окон. Содержит функции, обеспечивающие пользователя основными возможностями, характерными для большинства современных многооконных систем. Также поддерживает возможности ввода информации и взаимодействия с пользователем.
Стандарт OpenGL поддерживает функциональный интерфейс.
Open Inventor – объектно-ориентированная библиотека классов для описания сцен, которые нужно изобразить с помощью функций OpenGL.
Слайд 32DirectX
DirectX (от англ. direct — прямо, напрямую) — это набор API, разработанных для решения задач, связанных
с программированием под Microsoft Windows. Наиболее широко используется при написании компьютерных
игр. Пакет средств разработки DirectX под Microsoft Windows бесплатно доступен на сайте Microsoft. Зачастую обновленные версии DirectX поставляются вместе с игровыми приложениями.
Слайд 33DirectX
1995 г. - компания Microsoft представила первую версию библиотеки DirectX
(тогда она называлась Game SDK). Все права на доработку/изменение DirectX
принадлежат Microsoft.
DirectX предназначен только для платформ под управлением ОС Windows.
Стандарт DirectX основан на выборе интерфейсов Component Object Model (компонентная модель объектов), а объекты COM могут описываться практически любыми языками программирования, например C/C++, Delphi и даже Basic.
Стандарт DirectX включает в себя модули поддержки:
программирования двухмерной графики (модуль DirectDraw);
создания трехмерной графики (модуль Direct3D);
работы со звуками и музыкой (модули DirectSound и DirectMusic);
поддержки устройств ввода (модуль DirectInput);
разработки сетевых игр (модуль DirectPlay);
Используется:
при разработке графических интерфейсов операционной системы Windows
разработчиками игр
…
Слайд 34
Изначально разработана для Windows 3.1
16-битное графическое ядро по наследству перешло
и в Windows 95/98
в Windows NT/2000+ используется 32-битное графическое ядро,
предоставляющее больше возможностей
GDI+ - это новое графическое API, появившееся в Windows XP/2003 Server
Объектно-ориентированный интерфейс предоставленный в виде набора C++ классов
GDI
GDI (Graphics Device Interface) – графические функции из состава API Windows для аппаратно-независимого программирования различных графических устройств видеоадаптеров, принтеров.
Слайд 35
Достоинства:
Абстрагирование от особенности работы различных графических устройств, т.е. один и
тот же код может с легкостью производить вывод на различные
графические устройства.
Данная особенность сделала GDI основным инструментом программирования пользовательского интерфейса Windows
Недостатки:
Огромное количество функций усложняет изучение данного API
Отсутствие сглаживания векторных примитивов, растровых изображений и шрифтов
Слабые возможности по работе с полупрозрачными изображениями
Отсутствие поддержки изображений в формате, отличном от BMP и WMF/EMF
Управление ресурсами целиком возложено на программиста, а не на библиотеку
За универсальность пришлось заплатить низким быстродействием, что сделало GDI малопригодным для динамических приложений
Достоинства и недостатки GDI
Слайд 36
Объектно-ориентированная библиотека для вывода графики
Представлена в виде нескольких десятков классов
на С++
появилась начиная с Windows XP
доступна в виде redistributable packages
для Windows 98/ME/NT4/2000
Двумерная векторная графика
Обработка растровых изображений
Вывод текстов
Область применения GDI+
Что такое GDI+
Слайд 37
Достоинства
улучшены возможности по работе с текстом, векторной и растровой графикой
вместо
сотен функций GDI+ предоставляет несколько десятков хорошо спроектированных C++ классов
большая
часть работы по управлению ресурсами возложена на библиотеку и компилятор
разработчики рекомендуют использовать GDI+ вместо GDI в новых программах
Недостаток
низкая производительность
универсальность и в этот раз делает GDI+ малопригодной для создания динамических приложений
Достоинства и недостатки GDI+
Слайд 38
Для отображения графики и текста GDI использует следующие графические объекты:
Bitmap
– растровое изображение;
Brush – кисть;
Font – шрифт;
Metafile – метафайл;
Path –
путь;
Pen – перо;
Region – регион.
Графические объекты GDI+
Используется контекст графического устройства. Это понятие введено для описания того, гдк будет рисоваться изображение.
Слайд 39Графические файловые форматы
Графический формат – это порядок (структура), согласно которому
данные, описывающие изображение, записаны в файле.
Слайд 40
Форматов графических файлов существует великое множество и выбор приемлемого отнюдь
не является тривиальной задачей. Для облегчения выбора воспользуемся классификациями.
По типу
хранимой графической информации:
растровые (TIFF, GIF, BMP, JPEG);
векторные (AI, CDR, FH7, DXF);
смешанные/универсальные (EPS, PDF).
Слайд 42
TIFF - популярный формат для хранения изображений с большой глубиной
цвета.
GIF – рекомендуемы формат, сохраняющий изображения с ограниченным количеством цветов
(до 256). Также используется в Интернете.
BMP – формат хранения для растровых изображений однотонной закраски.
CGM – векторный формат. Обладает соответствующим функционалом для отображения содержимого, включает поддержку большого количества видов графической информации и геометрических примитивов.
DXF - открытый векторный формат файлов для обмена графической информацией между приложениями.