Прямое программирование видеоконтроллера
Основные типы графических режимов, условия и принципы их использования. Функции VGA и VESA BIOS. Простые форматы графических файлов, их содержание и специфика. Формат BMP для несжатого RGB-изображения. Особенности формата PCX для 256-цветов изображений.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 28.05.2016 |
Размер файла | 33,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Прямое программирование видеоконтроллера
Введение
графический изображение программирование видеоконтроллер
Развитие аппаратного обеспечения АТ-совместимых персональных компьютеров напоминает рост кораллового рифа: новые компоненты оборудования устанавливаются поверх старых, которые постепенно выходят из употребления (отмирают). Такой способ проектирования имеет один существенный недостаток: архитектура системы все больше и больше захламляется устаревшими, практически не используемыми компонентами. Особенно ясно захламленность системы видна на примере видеоконтроллеров: в каждой новой конструкции сохраняются компоненты всех предшествующих.
С целью увеличения скорости вывода изображения на экран приходится работать непосредственно с аппаратурой контроллера, и программисты вынуждены разбираться со множеством хитростей и трюков, которые были использованы разработчиками оборудования. Чтобы не перегружать читателей бесполезной информацией, в данной главе мы рассмотрим только такие свойства и особенности видеоконтроллеров, которые необходимо учитывать в процессе программирования.
1. Основные типы графических режимов
Современные видеоконтроллеры поддерживают разнообразные текстовые и графические режимы, различающиеся разрешением, палитрой используемых цветов, частотой кадровой развертки и т.д. Текстовые режимы различают по разрешению (числу отображаемых символов по горизонтали и вертикали) и цветовой палитре (возможен монохромный или 16-цветный режим).
Для графических режимов основным признаком классификации является количество одновременно отображаемых цветов и, соответственно, количество двоичных разрядов, необходимых для хранения одной точки изображения. Различают следующие типы графических режимов:
1) монохромный (1 - битное кодирование цвета точки);
2) 4-цветный CGA (2-битное кодирование);
3) 16-цветный EGA/VGA (4-битное кодирование);
4) 256-цветный SVGA (8-битное кодирование);
5) HiColor (16-битное кодирование);
6) TrueColor (24-битное или 32-битное кодирование).
При этом принципы работы с видеопамятью для каждого из основных типов видеорежимов настолько отличаются друг от друга, что в современных видеоконтроллерах используется для каждого из этих типов отдельный аппаратный блок. В настоящее время старые режимы (начиная от монохромных и кончая 16-цветными) вышли из употребления: вывод информации в этих режимах осуществляется очень медленно (вследствие неудачной реализации механизма работы с памятью). Поэтому ниже будут рассматриваться только текстовый 16-цветный режим и современные графические режимы.
Прежде чем можно будет начать работу в каком-либо режиме, необходимо вначале перевести систему в этот режим. Однако сделать это не так-то просто. Категорически не рекомендуется начинающим программистам ставить эксперименты по прямому управлению режимами работы видеоконтроллера через его регистры: некорректная установка параметров может вывести из строя монитор. Особенно велик риск для распространенных в нашей стране удешевленных моделей мониторов: снижение цены достигается за счет упрощения конструкции, в частности - ослабления защиты.
Для видеоконтроллеров разделение операций на аппаратные и программные является абсолютно жестким: любые переключения режимов должны выполняться при помощи функций BIOS видеоконтроллера или фирменных драйверов, а выводить информацию нужно напрямую в видеопамять. Переключать видеорежимы только с помощью «родного» программного обеспечения самого контроллера приходится по причине слабой стандартизированности устройств этого типа: с тех пор, как фирма IBM потеряла контроль над рынком персональных компьютеров, разработчики периферийного оборудования в буквальном смысле творят, что хотят. Даже внутри одной фирмы могут существовать несколько разных групп устройств (линий), в каждой из которых применяется собственная внутренняя архитектура. С большим трудом ассоциация VESA сумела стандартизировать функции управления режимами работы видеоконтроллеров.
Устанавливать необходимый видеорежим следует один раз при запуске прикладной программы на весь период ее выполнения. Переключать режимы в процессе работы крайне нежелательно: при этом наблюдаются разнообразные видеоэффекты, которые могут сильно раздражать пользователя (сбой синхронизации, «снег», мерцание и т.д.). Даже такая безобидная операция, как полное гашение экрана монитора на время переключения видеорежима, может быть неприятной для оператора: в течение нескольких секунд он будет не в состоянии контролировать работу системы.
Следовательно, видеорежим должен позволять выполнять все требуемые в программе операции - если требуется вывод и текстовой, и графической информации, то нужно сразу установить графический режим. Существует два основных способа программной установки видеорежима, которые мы рассмотрим ниже: с помощью функций VGA BIOS и с помощью функций VESA BIOS.
2. Функции VGA BIOS
Графические режимы VGA за прошедшее с момента создания (1987 год) этого типа видеоконтроллеров время сильно устарели, а текстовые используются двадцать лет и продолжают успешно применяться (благодаря простоте выполнения операций в этих режимах). Поэтому в настоящее время интерес для программистов представляет только небольшая подгруппа функций из стандартного набора VGA BIOS, предназначенная для работы в текстовом режиме:
1) установка режима;
2) управление положением и размером курсора;
3) переключение страниц;
4) управление шрифтами.
Для вызова функций VGA BIOS используется прерывание Int 10h. Набор функций очень большой, но в целом - устаревший. Ниже рассматриваются только те функции, применение которых до сих пор является целесообразным.
3. Функции VESA BIOS
Программистам приходится иметь дело с прерываниями VESA BIOS в тех случаях, когда система функционирует под управле¬нием любой типовой однозадачной (например, MS-DOS) или само¬дельной многозадачной (например, Linux) операционной систе¬мы, так как фирмы-изготовители поставляют драйверы только для Windows.
Стандарт VESA унифицировал некоторые наиболее важные опе¬рации при работе с видеоконтроллером - установку видеорежимов и управление видеопамятью. Начиная с версии 2.0, данный стан¬дарт поддерживает работу с линейным буфером видеопамяти. Пол¬ное описание стандарта VESA 3.0 на английском языке [96] мож¬но свободно загрузить из Интернета с сервера ассоциации VESA.
Обращение к VESA BIOS выполняется по прерыванию 10h с номе¬ром функции 4Fh. После выполнения вызова в регистре АХ будет возвращен код результата (статус возврата). В AL будет находиться основной код возврата: если AL = 4Fh - вызов успешно выполнен, если AL 4Fh - вызванная функция не поддерживается данной вер¬сией BIOS. В АН будет записан код, поясняющий результат:
1) 0 - вызов функции успешно выполнен;
2) 1 - вызов не выполнен;
3) 2 - функция не поддерживается в данной аппаратной конфигурации;
4) 3 - вызов функции невозможен в данном видеорежиме.
4. Простые форматы графических файлов
Задача вывода изображений на экран тесно связана с двумя другими задачами - сохранения изображений на диске в виде файлов и считывания изображений с диска. Существует множество различных форматов графических файлов, однако эти форматы отличаются обычно значительной сложностью. Далее мы рассмотрим два самых простых формата файлов - формат BMP (для несжатого RGB-изображения) и формат PCX для 256-цветных режимов.
5. Формат BMP для несжатого RGB-изображения
Формат файла BMP для несжатого RGB-изображения показан в таблице 1. Это самый простой из всех форматов, он воспринимается большинством графических редакторов, но порождает файлы гигантских размеров, поскольку одна точка изображения кодируется тремя байтами данных, по байту на каждый из цветовых компонентов (аналогично формату TrueColor24).
Формат файла BMP для несжатого RGB-изображения
Смещение |
Размер |
Значение |
Описание |
|
OOh |
WORD |
4D42h (BM) |
Признак файла BMP |
|
02h |
DWORD |
3xLxH + 54 |
Полный размер файла в байтах |
|
06b |
WORD |
0 |
Не используется |
|
08h |
WORD |
0 |
Не используется |
|
OAh |
DWORD |
54 (36h) |
Смещение области данных изображения от начала файла |
|
OEh |
DWORD |
40 (28h) |
Размер описателя изображения |
|
12h |
DWORD |
L |
Ширина изображения в пикселах |
|
16h |
DWORD |
H |
Высота изображения в пикселах |
|
1Ah |
WORD |
1 |
Число битовых плоскостей |
|
1Ch |
WORD |
24 (18h) |
Число битов на пиксел |
|
1Eh |
DWORD |
0 |
Метод сжатия |
|
22h |
DWORD |
3xLxH |
Размер изображения в байтах |
|
26 h |
DWORD |
0 |
Разрешение по горизонтали в пикселах на метр |
Создание файла BMP начинается с заполнения заголовка. Как видно из таблицы, в формате RGB большая часть полей заголовка заполняется строго определенными значениями (константами), никак не зависящими от вида и размеров изображения. Переменными параметрами являются только ширина изображения L, высота изображения Н, размер изображения в байтах (равен умноженному на три произведению ширины и высоты) и полный размер файла в байтах (является суммой размера изображения и размера заголовка). Допустим, нужно сохранить изображение размером 1024x768 точек. Тогда ширина L=1024, высота Н=*768, размер изображения равен 2 359 296 байт, а размер файла - 2 359 350 байтов.
Другой неприятной особенностью формата BMP является перевернутый (по отношению к экрану монитора) порядок записи строк в файл - первой записывается самая нижняя строка изображения. Проявляет себя этот недостаток только в том случае, если изображение по высоте превышает размеры экрана, а его просмотр нужно начинать с левого верхнего угла - чтобы добраться до верхней строки, приходится прокручивать файл до самого конца. Использование метода Родена обеспечивает под управлением DOS доступ ко всей оперативной памяти, что позволяет нейтрализовать недостатки формата BMP (большой объем файлов и перевернутый порядок строк).
6. Формат PCX для 256-цветных изображений
Если необходимо экономить дисковое пространство, то для 256 - цветных изображений лучше использовать формат PCX со сжатием по алгоритму Run Length Encoding (RLE). Файл PCX состоит из трех частей: заголовка, сжатого изображения и таблицы палитры.
Вообще говоря, данные в файлах PCX могут храниться в несжатом виде - в этом случае байт признака уплотнения данных в заголовке файла имеет значение 0. Неупакованный PCX формат может использоваться, например, для хранения черно-белых фотографий в формате 256 оттенков серого.
Однако в целях сокращения объема файла обычно применяется сжатие по RLE. Способ кодирования RLE предполагает выделение последовательностей пикселов одинакового цвета и запоминание количества повторений в специальном байте-счетчике. Каждая строка изображения кодируется отдельно, причем правила кодирования следующие:
1) отдельная точка со значением кода цвета менее COh будет просто представлена своим кодом;
2) отдельная точка со значением кода цвета, которое больше или равно COh, записывается в виде пары кодов, первым из которых будет байт счетчика со значением Clh, а вторым - собственно байт кода цвета точки;
3) горизонтальный отрезок из N (не более 63) одноцветных точек будет представлен парой кодов, первым из которых будет байт счетчика со значением N + COh, а вторым - байт кода цвета.
Если в байте версии файла PCX установлено значение 5, то последние 769 байт файла хранят структуру, содержащую байт - признак формата регистров ЦАГ1 и следующую за ним таблицу палитры (768 байт). Если в байте признака формата регистров записано значение OAh, то используется 6-разрядное кодирование основных цветовых компонентов, а если значение OCh - 8-разрядное кодирование. Таблицу нужно загрузить в регистры ЦАП видеоконтроллера при помощи подфункции 12h функции 10h прерывания Int 10h в соответствии со значением байта признака формата. Каждая из 256 строк таблицы состоит из трех байтов, содержащих значения компонентов соответствующего цветового оттенка в порядке, используемом функцией загрузки палитры: красный, зеленый, синий.
Палитра PCX в 256-цветном режиме часто не совпадаете используемой по умолчанию палитрой VGA, что создает дополнительные сложности при просмотре изображений - если кроме картинки вы хотите вывести какой-то поясняющий текст, то он поменяет цвет при смене палитры. Поэтому, несмотря на то, что в файле кодирование 256-цветное, при его создании и последующем просмотре удобнее всего использовать графические режимы TrueColor. При обмене информацией между программами при помощи РСХ - файлов возможны ситуации трех основных видов:
1) требуется передавать изображение только между своими программами, входящими в один пакет;
2) требуется принять изображение, созданное чужой программой;
3) нужно передать (транспортировать) изображение из своей программы в чужую.
При обмене файлами изображений внутри одного программного пакета никаких особых сложностей нет: можно использовать любую цветовую палитру. Вообще говоря, для транспортировки данных вы даже можете создать на основе принципа RLE свой собственный метод сжатия информации, нестандартный, но оптимальный в вашем конкретном случае.
При приеме файлов из чужих программ приходится либо устанавливать ту палитру, которая приходит вместе с файлом (что приводит к искажению цветов в вашей программе), либо производить перекодировку цветов изображения из чужой палитры в свою (что приводит к искажению изображения), либо работать в режиме TrueColor (что связано с проблемами совместимости видеоконтроллеров).
При транспортировке файлов из своего пакета программ в чужой следует учитывать, что многие редакторы изображений корректно работают только с восьмибитовым форматом цветовых компонентов, то есть значение байта признака формата регистров ЦАП должно быть равно ОСИ, а данные в таблице палитры должн ы соответствовать этому формату. Например, если нужно передать в MS Photo Editor файл, созданный в стандартном 256-цветном VGA-режиме DOS, то после считывания палитры из регистров ЦАП нужно перед записью таблицы в файл сдвинуть в ней каждый байт данных влево на два разряда.
Если требуется реализовать режим фотографии с 256 градациями серого цвета, то соответствующую таблицу палитры нужно вначале сформировать. Генерация таблицы выполняется по примитивному алгоритму: в первую строку записываются три байта со значением ноль, а в каждой следующей строке значения для всех компонент увеличиваются на 1 (получаем в результате в первой строке черный цвет, а в последней - белый).
Ситуация, когда приходится иметь дело с графическим редактором, работающим только с конкретной палитрой, возникает довольно редко. Однако если такая необходимость есть, то приходится заимствовать таблицу палитры вместе с байтом формата ЦАП. Для этого нужно создать файл (для любого произвольного изображения) в чужом пакете, «взять» из него последние 789 байт и либо записать в виде загружаемого двоичного файла, либо перекодировать в текстовый include-файл. Все изображения, которые вы предназначаете для работы с таким редактором, должны создаваться с использованием заимствованной палитры.
Библиографический список
1. Авдеев, В.А. Периферийные устройства: интерфейсы, схемотехника, программирование/В.А. Авдеев. - М.: Изд-во ДМК Пресс, 2009. - 492 с.
2. Гук, М. Аппаратные средства IBM PC. Энциклопедия. 3-е изд./ М. Гук. - СПб.: Изд-во Питер, 2006. - 234 с.
3. Гук, М. Интерфейсы устройств хранения: ATA, SCSI и другие. Энциклопедия/ М. Гук. - СПб.: Изд-во Питер, 2007. - 742 с.
4. Лапин, А.А. Интерфейсы: выбор и реализация. /А.А. Лапин. - М,: Изд-во Техносфера, 2005. - 508 с.
Размещено на Allbest.ru
Подобные документы
Характеристика цифровых изображений, применяющиеся в издательской деятельности. Отличительные особенности растровых и векторных изображений, понятие цветового охвата, изучение моделей для описания отраженных цветов. Форматы и виды графических файлов.
контрольная работа [22,9 K], добавлен 16.09.2010Виды графических редакторов. Форматы файлов для хранения растровых графических изображений. Среда графического редактора. Панели инструментов и режимы работы графических редакторов. Инструменты редактирования рисунка. Изменение шрифта текста на рисунке.
контрольная работа [246,6 K], добавлен 16.12.2010Преобразование графической информации из аналоговой формы в цифровую. Количество цветов, отображаемых на экране монитора. Расчет объема видеопамяти для одного из графических режимов. Способы хранения информации в файле. Формирование векторной графики.
презентация [2,1 M], добавлен 22.05.2012GIF как формат хранения графических изображений, возможности. Анализ особенностей сжатия по методу LZW. Характеристика графического формата ВМР. CMY как аппаратно-ориентированная модель, используемая в полиграфии для субтрактивного формирования оттенков.
дипломная работа [673,9 K], добавлен 28.05.2013Векторный способ записи графических данных. Tехнология сжатия файлов изображений Djvu. Скорость кодирования и размеры сжатых файлов. Сетевые графические форматы. Особенности работы в программе Djvu Solo в упрощенном виде. Разновидности стандарта jpeg.
реферат [23,5 K], добавлен 01.04.2010Общая информация о графическом формате. Описание формата Microsoft Windows Bitmap. Структура файла DDВ исходного формата ВМР. Преобразования графических файлов. Просмотр и редактирование растровых изображений. Создание многодокументного приложения.
дипломная работа [1,5 M], добавлен 06.06.2010Определение компьютерной графики, задачи, виды, области применения. Способы распознавания образов, системы технического зрения. Инструменты для синтеза изображений и обработки визуальной информации. Представление цветов, форматы графических файлов.
шпаргалка [49,9 K], добавлен 13.09.2011Растровые, векторные и комплексные графические форматы. Классификация графических форматов по допустимому объему данных, параметрам изображения, хранению палитры и методике сжатия. Разновидности метода Фурье. Метод преобразования Karhunen-Loeve.
курсовая работа [46,0 K], добавлен 22.12.2014Растровые и векторные графические редакторы. Формирование изображений, форматы графических файлов. Особенности векторной графики, ее достоинства. Построение треугольника и гиперболы по алгоритму Бразенхема. Математические модели поверхностей и объектов.
курсовая работа [769,5 K], добавлен 21.12.2013Общая характеристика растровых и векторных графических форматов: поддержка графическими редакторами, применение и отличия друг от друга. Специфика алгоритмов кодирования данных в исследуемых форматах, их совместимость с программным обеспечением.
презентация [25,2 K], добавлен 06.01.2014