- •I. ОСНОВНЫЕ ПОНЯТИЯ СОВРЕМЕННОЙ КОМПЬЮТЕРНОЙ ГРАФИКИ
- •1.1. Философия развития средств визуализации
- •1.2. Понятия компьютерной графики
- •1.3. Основные направления современной компьютерной графики
- •Контроль знаний.
- •2.1. Устройства видеовывода
- •2.1.1. Видеоадаптеры
- •2.1.1.1. История видеосистем персональных компьютеров
- •2.1.1.2. Устройство видеоадаптера VGA
- •2.1.1.3. Видеоадаптеры SVGA
- •2.1.1.4. Современные тенденции конструирования видеоадаптеров
- •2.1.2. Мониторы
- •2.1.3.Принтеры
- •2.1.4. Плоттеры
- •2.2. Устройства ввода графической информации
- •2.2.1. Мышь в графических режимах
- •2.2.2. Тачпад и Трекпойнт
- •2.2.3. Дигитайзеры
- •2.2.4. Сканеры
- •Контроль знаний.
- •3.1. Основные определения
- •3.2. Особенности цветового зрения человека
- •3.3. Цветовые модели компьютерной графики
- •3.3.1. Аддитивные цветовые модели
- •3.3.2 Субтрактивные цветовые модели
- •3.3.3. Перцепционные цветовые модели. Модели CIE
- •Контроль знаний.
- •IV. РАСТРОВАЯ ГРАФИКА
- •4.1. Геометрические характеристики растра
- •4.2. Методы улучшения растровых изображений
- •4.2.1. Устранение ступенчатого эффекта – антиалиасинг (antialiasing)
- •4.2.2. Эмуляция оттенков цвета – дизеринг (dithering)
- •4.3. Алгоритмические основы растровой графики
- •4.3.1. Поиск оптимального алгоритма рисования прямой
- •4.3.2. Инкрементный алгоритм Брезенхема (Bresenham) для прямой
- •4.3.3. Алгоритмы рисования окружности
- •4.3.4. Заполнение многоугольников
- •4.3.4.1. Построчное заполнение
- •4.3.4.2. Сортировка методом распределяющего подсчета
- •4.3.5. Отсечение отрезков
- •4.3.5.1. Двумерный алгоритм Коэна-Сазерленда
- •4.3.6. Отсечение многоугольника
- •4.3.6.1. Алгоритм Сазерленда-Ходгмана
- •4.3.6.2. Алгоритм отсечения многоугольника Вейлера-Азертона
- •Контроль знаний.
- •5.1. Введение в векторную графику
- •5.2. Элементы (объекты) векторной графики. Объекты и их атрибуты
- •5.3. Цвет в векторной графике
- •5.4. Структура векторной иллюстрации
- •5.5. Применение векторной графики
- •5.6. Графические пакеты для работы с растровой графикой
- •Контроль знаний.
- •VI. ТРЁХМЕРНАЯ ГРАФИКА
- •6.1. Основные понятия трехмерной графики
- •6.3. Геометрическое моделирование
- •6.3.1. Элементы моделей
- •6.3.2. Методы построения моделей
- •6.4. Построение проекций пространственных образов
- •6.5. Алгоритмические основы трёхмерной графики
- •6.5.1. Преобразования координат
- •6.5.2. Параметрическое задание кривых на плоскости и в пространстве. Кривые Безье
- •6.5.3. Удаление невидимых частей изображения. Закрашивание граней
- •6.5.3.1 2D алгоритм Сазерленда-Кохена
- •6.5.3.2 3D алгоритм Робертса, алгоритм Варнока
- •6.6. Фракталы
- •Контроль знаний.
- •VII. ФОРМАТЫ ГРАФИЧЕСКИХ ФАЙЛОВ
- •7.1. Основные понятия
- •7.2. Растровые форматы файлов и алгоритмы сжатия
- •7.2.1. Формат PCX и групповое кодирование
- •7.2.2. Формат BMP
- •7.2.3.Формат TGA (Targa)
- •7.2.4. Формат GIF
- •7.2.5. Aлгоритм сжатия LZW для GIF
- •7.2.6. Формат JPEG и алгоритм сжатия с потерями
- •7.2.7. Формат RAW для профессионального использования
- •7.2.8. Формат FIF и фрактальное сжатие
- •Контроль знаний.
II.АППАРАТНЫЕ УСТРОЙСТВА КОМПЬЮТЕРНОЙ ГРАФИКИ
2.1.Устройства видеовывода
2.1.1. Видеоадаптеры
2.1.1.1. История видеосистем персональных компьютеров
Важная черта архитектурыIBM персонального компьютера: контроллер видеосистемы всегда был расположен на системной шине, что давало возможность быстро вести обмен данными между оперативной памятью и видеопамятью. Иная архитектура, характерная для «больших компьютеров», предполагала наличие промежуточного интерфейса ввода-вывода, что ограничивало быстродействие и функциональные возможности отображающих устройств. Дисплеи всегда предполагались растровыми.
Первый компьютер IBM PC (1981 г.) был оснащён видеоадаптером
MDA:
–официальное название – Monochrome Display Adapter;
–режимы – монохромный текстовый (25 строк по 80 символов), размер символа 7х9 пикселей;
–интерфейс с монитором – цифровой, частота обновления 50 Гц;
Видеоадаптер HGC (1982 г.).
–официальное название – Hercules Graphic Card;
–режимы – MDA + монохромный графический (720х348)
–интерфейс с монитором – цифровой;
Видеоадаптер CGA.
–официальное название – Color Graphic Adapter, память 16 Кбайт;
–режимы – 16-цветный текстовый (размер символа 7х7 пикселей) и 2 графических режима (монохромный 640х200 и 4-цветный 320х200);
–интерфейс с монитором – цифровой, частота обновления 60 Гц, совместим со стандартом NTSC;
Видеоадаптер EGA (1984 г.).
–официальное название – Enhanced Graphic Adapter;
–режимы – цветные текстовые (размер символа 7х9 пикселей) и графические режимы (CGA + 16-цветный 640х350). Палитра 64 цвета;
–интерфейс с монитором – цифровой, частота обновления 60 Гц, увеличена горизонтальная частота сканирования, в связи с чем более не поддерживается совместимость с NTSC;
10
Видеоадаптер, разработанный для компьютеров PS/2 – MCGA (1987 г.).
–официальное название – Multi-Color Graphics Array;
–режим – цветные текстовые (EGA) и графические (CGA + графический режимы с разрешением640х480 и 256-цветный 320х200). Палитра 256 К (262144) цветов;
–интерфейс с монитором – аналогово-цифровой.
Видеоадаптер VGA (с конца 80-х является стандартом видеоадаптера для IBM PC).
–официальное название – Video Graphic Array (термин изначально относился к СБИС, вобравшей в себя множество функции, ранее реализуемых в адаптере EGA несколькими микросхемами), память 256 Кбайт;
–режимы – всего 17: цветные текстовые (предельное разрешение 720х400 пикселей) и графические (предельные 640х480х16 цветов и 320х200х256 цветов) Палитра 256 K цветов;
–совместимость – MDA, CGA, EGA;
–интерфейс с монитором– аналогово-цифровой, максимальная частота обновления 70 Гц, автоматическое определение цветного/монохромного монитора. На рисунке 1 приведена общая схема устройстваVGA видеоадаптера. ЦАП (RAMDAC) преобразует 8 битов цифровой цветовой информации из микросхемы VGA в аналоговые сигналы, используемые мониторами.
Рисунок 1 – Общая схема устройства VGA
Используемый тип цифро-аналогового преобразователя обеспечивает просмотр таблицы цветов, на вход которой поступает8-битовый сигнал, а на выходе генерируется аналоговый сигнал с6-битовым разрешением по яркости для каждого из базовых цветов(красный, синий, зеленый), что дает возможность отображения 256К цветов. VGA управляет аналоговыми цветовыми сиг-
11
налами с дискретностью в 11.1 мВ. В видео–BIOS записаны экранные шрифты, служебные таблицы и т.п.
2.1.1.2. Устройство видеоадаптера VGA
Будем называть видеобуфером или видеопамятью (VRAM) память, непосредственно находящуюся на плате видеоадаптера и управляемую видеоконтроллером. Эта память логически может быть поделена на несколько(обычно четыре) цветовые плоскости.
Видеобуфер по определённым правилам, устанавливаемым в основном BIOS и операционной системой, полностью или частично отображается в заданное адресное пространство оперативной памяти компьютера для хранения и оперативного изменения отображаемого на мониторе экранного образа. Эту область памяти будем называть отображаемой. Эта область логически поделена на видеостраницы (одну или несколько), одна из которых являетсяактивной, т.е. графические данные, находящиеся на ней, отображаются на экране монитора.
Рассмотрим отображаемое пространство видеопамяти в адресном -про странстве ОЗУ компьютера, находящегося под управлением MS DOS (рис.2) и работающего с VGA видеокартой в различных графических режимах(режим 13h – 320х200х256 цветов и 0Eh – 640x200x16 цветов). Видеопамять отображается в оперативную память с адресаA0000h и имеет размер 64 КБайт. Размер видеостраницы зависит от разрешения экрана и количества цветов, приходящихся на один пиксель изображения4.
В области памяти, находящейся за отображаемой и также отведённой для видеоинформации (начиная с адреса С0000-С7FFFh) обычно переписано содержимое BIOS видеокарты.
По умолчанию в отображаемой памяти левому верхнему углу экрана в графическом режиме соответствует адресA0000h, в текстовом режиме – адрес B8000h (цветные текстовые режимы) или B0000h (монохромные текстовые режимы).
4 Зачем нужны видеостраницы? При перерисовке движущейся графики прямо в отображаемой памяти без промежуточной прорисовки на невидимых страницах изображение выглядит подмигивающим и колышущимся. Это последствия изменения памяти, которая одновременно модифицируется действиями процессора и циклически отображается на экране. Устройство видеопамяти VGA позволяет избежать этой проблемы путем создания теневых видеостраниц. Достоинство переключения страниц – это возможность, не вызывая на экране нежелательных эффектов, модифицировать одну страницу, пока отображается другая. Как только закончилось формирование процессором теневой страницы, ее делают активной, установив на нее начальный адрес отображения. Область же, бывшая активной, теперь может быть перерисована и затем снова отображена.
12
Рисунок 2 – Отображаемое пространство видеопамяти в адресном пространстве ОЗУ компьютера, находящегося под управлением MS DOS
Но как соответствует байты информации в этом адресном пространстве и растровое изображение, формируемое на экране монитора?
а) Графические режимы. VGA-адаптер может в зависимости от выбранного режима поддерживать две основные организации памяти: линейную и пло-
скостную.
При линейной организации каждый байт видеопамяти используетсядля хранения, например, информации о цвете одного пикселя изображения. Байты последовательно отображается в адреса памяти адресного пространства ОЗУ процессора. То есть, экран представляет собой двумерный байтовый массив. Один из таких режимов работы VGA имеет код 13h, 320×200 пикселей.
Таким образом, на одной строке изображения умещается320 байт, минимальный размер видеостраницы, необходимой для заполнения экрана, составляет 320*200=64000 байт. Палитра в этом режиме состоит из 256 цветов.
Однако, используется и другой способ организации памяти– плоскостной. В этом режиме памятьVGA (256 Кбайт) организована как четыре64килобайтные плоскости. Каждая плоскость – это линейный битовый образ, т.е. каждый байт плоскости отвечает за8 рядом лежащих пикселей (1 пиксель – 1 бит), следующий байт этой же плоскости контролирует следующие8 пикселей, и т. д. Все четыре битовые плоскости адресуются как один сегмент памяти с начальным адресом A000:0000. То есть, как показано на рисунке 3.
13
Рисунок 3 – Организация битовых плоскостей Данные плоскости отображаются одна поверх другой, и занимают в опе-
ративной памяти одно и то же место, при этом доступ к плоскостям и отображение плоскостей контролируется программированием регистров маски плоскостей (MMR – map mask register) графического адаптера. Поэтому, если записать байт по адресу A000:0000, то это вовсе не означает, что посланный байт в действительности запишется, хотя бы в одну из этих плоскостей.
Основное достоинство плоских режимов– высокое быстродействие, но алгоритмы формирования изображения здесь гораздо сложнее, чем в линейных. Пример режима с плоскостным способом организации памяти – 12h.
Этот режим поддерживает разрешение 640 х 480 пикселей. При этом для отображения экрана достаточно на каждой плоскости использовать38400 байт памяти.
Каждая плоскость отвечает за определенную компоненту цвета пикселя (что и определило их широко распространенное название– цветовые плоскости). При этом, очевидно, число одновременно возможных цветов = 16, так как цвет пикселя определяется комбинацией битов на одинаковых позициях этих четырех плоскостей (цвета выбираются из 16-цветной палитры). При этом в 64 Кбайта отображаемой памяти укладывается полностью всего одна видеостраница (остаётся неиспользованным 27135 байт).
Логическая ширина экрана в памяти VGA при работе с битовыми плоскостями не обязательно совпадает c физической. Программист может сам опреде-
14
лить размер логического экрана, вплоть до 4080 пикселей, и использовать физический экран как окно в определенном им логическом экране. Боле того, экран VGA может иметь любую логическую высоту – пока не кончится память. Такие логические экраны удобно использовать в программах САПР.
b)Текстовые режимы. Здесь также создаётся видеостраница, которая в этом случае имеет гораздо меньшие размеры. За каждый символ изображения отвечает два байта: первый хранит ASCII-код символа, второй содержит атрибуты цвета (биты 0-3 – цвет символа, 4-6 –цвет фона, 7 – флаг мерцания). При этом в первом цветовом слое размещаютсяASCII-коды отображаемых символов, во втором – атрибуты символов, в третьем – знакогенератор.
c)Регистры и программирование VGA. VGA имеет шесть основных групп регистров: регистры общего назначения, регистры синхронизации, контроллера ЭЛТ, графического контроллера, контроллера атрибутов и цвета(см. Таблица
1).
Впервой группе регистров каждый регистр имеет свой собственный адрес
восновном адресном пространстве ввода-вывода. Во всех остальных группах используется индексная адресная схема. Она такова: в основном адресном пространстве доступны только два порта ввода-вывода. Первый порт – индексный, второй – порт данных.
Достаточно большому количеству регистровVGA в каждой группе присвоены соответствующие индексы. Поэтому для того, чтобы обратиться к соответствующему регистру, нужно записать его индекс в индексный порт, а затем прочитать (или записать) данные в порт данных. В каждой группе регистров используется свой индексный порт и порт данных.
Для большинства графических приложений (и прежде всего игровых программ) использование режима, который сочетал бы в себе достоинства линейного (быстрое перемещение фрагментов изображения и использование нескольких видеостраниц) и плоскостного (256 цветов и удобство программирования), является чрезвычайно важным. Один из широко известных недокументированных режимов для VGA носит название "режим X" (на основе режима 13h) и обладает следующими свойствами: 256 цветов, разрешение 320×240 пиксел (при этом нет искажений изображения на экране), три отображаемых страницы, возможность быстрого копирования аппаратными средствами VGA.
15
|
|
|
|
|
|
|
|
|
|
|
Таблица 1 |
|||
Название |
Диапазон ад- |
|
Количество |
|
Основное назначение |
|
|
|
||||||
группы |
ресов или |
|
регистров в |
|
|
|
|
|
|
|
|
|||
регистров |
отдельные |
|
группе |
|
|
|
|
|
|
|
|
|||
|
|
адреса портов |
|
|
|
|
|
|
|
|
|
|
||
|
|
ввода/вывода |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
2 |
|
|
3 |
|
|
|
4 |
|
|
|
|
|
Регистры |
-об03ССh, 03С2h, |
|
4, каждый регистр |
Определяют |
состояние |
видеокарты |
|
|||||||
щего |
назначе- |
03CAh, |
|
|
имеет свой |
|
и обеспечивают корректный доступ |
|
||||||
ния |
|
03DAh, 03C2h, |
|
собственный |
к другим группам регистров |
|
|
|
||||||
|
|
03DAh |
|
|
адрес |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
Регистры |
|
индексный |
|
5, доступны |
через |
Регистры управляют |
временными |
|
||||||
синхронизации |
порт |
03С4h, |
индексы |
|
параметрами видеоадаптера и раз- |
|
||||||||
(sequencer) |
порт |
данных |
|
решением (запрещением) доступа к |
|
|||||||||
|
|
03С5h |
|
|
|
|
отдельным цветовым плоскостям. |
|
||||||
|
|
|
|
|
|
|
||||||||
Регистры |
кон- |
индексный |
|
25, доступны |
Данные регистры управляют сигна- |
|
||||||||
троллера |
ЭЛТпорт 03D4h, |
|
через индексы |
лами |
синхронизации, |
определяют |
|
|||||||
(CRT- |
|
порт |
данных |
|
форму |
курсора, а |
также |
формат |
|
|||||
Controller) |
03D5h |
|
|
|
|
данных на экране. Назначение и |
|
|||||||
|
|
|
|
|
|
|
формат ряда регистров у разных |
|||||||
|
|
|
|
|
|
|
фирм-производителей может раз- |
|||||||
|
|
|
|
|
|
|
личаться. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
Регистры |
|
индексный |
|
9, доступны |
через |
В основном |
поддерживает |
обмен |
||||||
графического |
порт |
03СEh, |
индексы |
|
данными между процессором и ви- |
|||||||||
контроллера |
порт |
данных |
|
деопамятью. |
Используются |
|
при |
|||||||
(Graphics |
|
03СFh |
|
|
|
|
программировании |
различных |
ре- |
|||||
Controller) |
|
|
|
|
|
жимов записи графических данных, |
||||||||
|
|
|
|
|
|
|
чтения и перемещения данных. |
|
|
|||||
|
|
|
|
|
|
|
|
|||||||
Регистры |
кон- |
индексный |
|
21,доступны через |
Управление |
цветовыми характери- |
||||||||
троллера |
атри- |
порт |
и |
портиндексы |
|
стиками изображений. Программи- |
||||||||
бутов |
|
данных 03С0h |
|
|
|
руется |
16-цветная |
палитра, |
цвето- |
|||||
|
|
|
|
|
|
|
вые режимы и панорамирование. |
|
|
|||||
|
|
|
|
|
|
|
|
|
||||||
Регистры цвета |
03С6h-03C9h |
|
5, три из |
которыхПрограммирование палитры |
|
|
|
|||||||
|
|
|
|
|
обеспечивают |
VGA, т.е. доступ на чтение и запись |
||||||||
|
|
|
|
|
доступ к байтовой |
таблицы цветов для RAMDAC. |
|
|
||||||
|
|
|
|
|
таблице цветов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В режиме X каждый пиксель занимает байт видеопамяти, но эти байты расположены не последовательно друг за другом, а отображаются в четыре цветовые плоскости (рисунок 4). То есть, пиксель с экранными координатами (0,0)
16