Графические устройства

         

Предисловие Основы компьютерной графики были

Предисловие
Видеосистемы и стандарт VESA
Новые возможности VBE 2 0
Линейное пространство адресов

Работа с регистрами палитры
Заключительные замечания
Видеосистемы и их стандартизация
Мониторы
Видеокарты и стандарты
Системные шины
Стандарты IBM
Стандарты IBM и BIOS
Стандарты были не всегда
Акселераторы

Трехмерная графика


Модели акселераторов
Функции акселераторов
Программирование акселераторов
Примером могут служить Windows
Общая характеристика стандарта VESA
Стандартизация видеорежимов
Характеристики видеорежимов
Видеорежимы VESA
Таблица 1 1 Видеорежимы VESA

Коды режимов VESA и OEM
Информационные функции VBE
Вызов функций VВЕ
Примеры вызова информационных
Запрос общих данных
Таблица 1 2 Информация возвращаемая по запросу 4F0ih
Атрибуты видеорежима
Таблица 1 3 Назначение разрядов кода атрибутов режимов
Основные функции VBE 1 2
Установка и чтение режима

Сохранение и восстановление состояния
Перемещение по видеопамяти
Регистры цвета видеокарты

Графические устройства

Особенности работы в режимах VESA

Проверка поддержки видеорежима
Когда невозможна установка видеорежима?
Размещение массива Info
Проверка существования VBE
Пример 2 1 Проверка поддержки стандарта VESA
Пример 2 2 Чтение информации о
Заключительная проверка
Пример 2 3 Заключительная проверка поддержки видеорежима
Пример 2 4 Сохранение исходного
Коды VESA и OEM

Обработка информации о режиме
Пример 2 5 Определение значений трех переменных
Пример 2 6 Сохранение величин
Процедуры для работы с одним окном видеопамяти
Доступ к видеопамяти
Пример 2 7 Установка окна с использованием функции BIOS
Пример 2 8 Три подпрограммы для работы с видеоокнами
Контроль ошибок
Работа с двумя окнами видеопамяти
Перекрытие окон

Пример 2 9 Процедура установки одного или двух окон
Раздельная работа с окнами
Страничная организация видеопамяти
Смена активной страницы
Пример 2 10 Установка нового начала
Изменения в вычислениях адресов
Расположение и размеры страниц
Страница в начале окна
Таблица 2 1 Размеры страниц для трех групп видеорежимов
Часто используемые в примерах имена

Основные переменные
Пример 2 11 Описания основных переменных в сегменте данных
Пример 2 12 Описание макроопределений
Параметры макровызова
Раздел для начинающих
Сегментирование

Графические устройства

Видеорежимы packed pixel graphics
Варианты построения строк
Построение строки слева направо
Пример 3 15 Построение строки 256цветного рисунка
Ускорение цикла построения
Пример 3 16 Ускоренное построение строки рисунка
Распаковка 16цветных строк
Пример 3 17 Подпрограмма построения

Воспроизведение не сжатых рисунков
Пример 3 21 Работа с прямоугольной
Выбор вспомогательной подпрограммы
Особенности работы с большими рисунками
Размер считываемой порции
Новые переменные
Пример 3 22 Построение рисунка произвольного размера
Пример 3 23 Чтение фрагмента файла в буфер обмена
не помещается на экране
Воспроизведение сжатых рисунков

Техника распаковки строки
Подпрограмма распаковки строки
Пример 3 24 Распаковка строки рисунка (способ RLE для PCX)
Пример 3 25 Чтение очередного символа из буфера обмена
Построение рисунка
Пример 3 26 Построение рисунка упакованного в стандарте PCX
Недостатки сжатия по способу RLE
Характеристика стандарта GIF
Заключительные замечания
Установка палитры

Изменение состояния курсора
Маскировка
Перемещение рисунков
Идентификация находящихся на экране объектов
Таблица состоит из строк одинакового
Работа с отдельными точками
Команды для манипуляции с точками
Таблица 3 1 Пересылка из памяти в память
Таблица 3 2 Назначение строковых операций
Смена сегмента источника

Пример 3 1 Очистка сегмента с использованием команды mov
Пример 3 2 Микропрограммный цикл очистки сегмента памяти i
Окна видеопамяти
Сегментирование памяти
Доступ к сегментам
Закрашивание рабочей области экрана
Пример 3 3 Закрашивание всего экрана заданным цветом
Точки и их адреса
Подпрограмма CallWin
Пример 3 4 Вычисление и установка окна и адреса точки

Использование CallWln
Пример 3 5 Вывод белой точки в центр экрана
Смежные точки и их адреса
Таблица 3 3 Расположение и адреса смежных точек
Построение геометрических фигур
Прямые линии
Пример 3 6 Подпрограммы для рисования горизонтальной линии
Рисование линии справа налево
Пример 3 7 Рисование горизонтальной линии справа налево
Ускорение цикла рисования

Пример 3 8 Подпрограмма быстрого
Пример 3 9 Замена команды rep stosb на rep stosw
Пример 3 10 Замена команды rep stosb на rep stosd
Рисование гладких линий
Пример 3 11 Подпрограмма для рисования гладких линий
Произвольные линии
Прямоугольники
Полоса заданного цвета
Пример 3 12 Закрашивание прямоугольной полосы
Вычисление адресов строк

Пример 3 13 Подпрограмма закрашивания прямоугольной области
Пример 3 14 Подпрограмма рисования контура прямоугольника
Построение рисунков

Графические устройства

Цвет на экране
Исходная цветовая палитра

Программа для визуализации палитры
Пример 4 1 Программа для визуализации стандартной палитры
Стандартная палитра CGA
Таблица 4 2 Названия и коды цветов
Общими характеристика группы функций 10h
Работа с одним регистром
Пример 4 2 Установка содержимого последнего регистра цвета
Работа с блоком регистров
Подпрограммы сохранения и восстановления палитры
Примерах 4 3 и 4 4 приведены подпрограммы

Пример 4 3 Сохранение текущей палитры в буфере
Пример 4 4 Восстановление исходной палитры из буфера

Графические устройства

Работа с текстом
Вывод информационных строк

Расположение и адрес строки
Пример 5 20 Вычисление адреса начала информационной строки
Манипуляции с исходным фоном
Размер и размещение фона
Подпрограмма Savinfo
Пример 5 21 Сохранение фона на месте информационной строки
Подпрограмма Delinfo
Пример 5 22 Восстановление фона
Упрощение подпрограмм
Пример 5 23 Вывод текста информационной строки

Текстовый курсор в графическом режиме
Предварительные замечания
Способ построения курсора
Таблица 5 1 Схема выполнения операции хоr
Пример 5 24 Подпрограмма изменения
Таблица 5 2 Варианты переменных команд для примера 5 24
Мигающий курсор
Перехват прерываний от таймера
Пример 5 25 Сохранение и изменение содержимого вектора 1Ch
Восстановление вектора прерывания

Пример 5 26 Восстановление исходного содержимого вектора 1Ch
Пример 5 27 Подпрограмма создающая эффект мигающего курсора
Ввод символов с клавиатуры
Чтение введенного символа
Управление курсором
Обработка служебных символов
Подпрограмма Inline
Пример 5 28 Ввод символов текста в буфер строки (Linbuf)
Пример вызова Inline Для иллюстрации
Пример 5 29 Вывод текста информационной строки

Текстовые режимы
Русский текст на экране
Таблицы знакогенератора
Загрузка собственной таблицы
Таблица должна располагаться в
Пример 5 1 Загрузка таблицы символов 8x16 в знакогенератор
Использование таблиц русификатора
Пример 5 2 Загрузка таблицы символов 8x16 точек из ROM BIOS
Общая характеристика процесса вывода текста
Страницы видеопамяти

Фрагмент области данных BIOS
Пример 5 3 Фрагмент области данных BIOS
Вывод текста с использованием поддержки DOS и BIOS
Вывод с помощью функции DOS
Пример 5 4 Вывод строки на экран с помощью функции DOS
Поддержка вывода BIOS
Вывод повторяющихся символов
Пример 5 5 Построение горизонтальной
Вывод строки текста
Пример 5 6 Вывод строки с использованием функции BIOS OEh

Раскрашивание текста
Пример 5 7 "Заливка" экрана синим цветом
Пример 5 8 Подпрограмма для вывода символов и атрибутов
Позиционирование текста
Пример 5 9 позиционирование курсора
Использование функции 13h
Пример 5 10 Вывод текста с использованием функции BIOS 13h
Непосредственная работа с видеобуфером
Пример 5 11 Вычисление адреса на указанной странице
Пример 5 12 Запись символов строки с одинаковым

Пример 5 13 Запись символов строки без атрибутов
Пример 5 14 Раскрашивание символов находящихся в видеопамяти
Пример 5 15 Перемещение курсора
Установка активной страницы
Пример 5 16 Установка активной
Замечание о переносимости
Графические режимы
Таблицы символов
Доступ к таблице символов
Установка таблицы символов

Пример 5 17 Определение адреса
Программный знакогенератор
Общая характеристика знакогенератора
Таблица символов не содержит палитры
Новые переменные
Пример 5 18 Аргументы программного знакогенератора
Пример 5 19 Подпрограмма рисования
Изменения для режимов HiColor
Изменения для режимов True Color
Пропорциональные шрифты

Масштабируемые шрифты

Графические устройства

Курсор и мышь
Предварительные действия
Новое макроопределение
Пример 6 7 Макроопределение для обращений к драйверу мыши
Пределы перемещения и исходная позиция

Новые переменные
Пример 6 8 Переменные используемые при работе с мышью
Пример 6 9 Настройка драйвера задачи и первый вывод курсора
Пример 6 9 предназначен для выполнения
Чувствительность курсора и мыши
Работа в режиме опроса драйвера мыши
Управляющий алгоритм для режима опроса
Структура задачи
Пример управляющего алгоритма
Пример 6 10 Управляющий алгоритм для режима опроса

Расшифровка и исполнение команд
Ввод спецификации файла
Завершение задачи
Пример 6 11 Завершение работы задачи и выход в DOS
Использование стрелок
Формирование кодов событий
Функции драйвера
Взаимосвязь событий
Таблица 6 2 Перечень событий для одной кнопки мыши
Пример 6 12 Формирование кодов событий для двух кнопок

Идентификация графических объектов
Управление перемещением курсора
Предварительные замечания
Пример 6 13 Группа подпрограмм для перемещения курсора
Дополнительная точка входа
Работа в режиме прерываний
Функции драйвера
Установка основной подпрограммы
Установка альтернативных подпрограмм
Ошибка в драйвере Mitsumi

Вызов подпрограммы драйвером
Общие требования к подпрограммам
Способы перемещения курсора
Подпрограмма Mousm
Пример 6 14 Прерывающая подпрограмма для перемещения курсора
Изменение флага состояния
Установка Mousm
Пример 6 15 Установка прерывающей подпрограммы Mousm
Анализ состояния кнопок
Универсальная подпрограмма

Пример 6 16 Обслуживание прерываний от драйвера мыши
Построение рисунка курсора
Курсоры для Windows
Структура файлов Icon
Пример 6 1 Распечатка (dump) файла Left_00 cur
Предварительная подготовка рисунка
Пример 6 2 Поворот чернобелого рисунка или маски
Распаковка рисунка и маски
Сокращение рисунка и маски
Пример описания рисунка и маски

Пример 6 3 Описание рисунка и маски курсора
Немаскируемый курсор
Подпрограмма Tglpntr
Пример 6 4 Подпрограмма переключения состояния курсора
Недостатки немаскируемого курсора
Маскируемый курсор
Как производится маскировка
Схема построения рисунка
Подпрограмма Showpnt

Пример 6 5 Подпрограмма построения
Пример 6 6 Восстановление исходного
Замечания к описанным подпрограммам
Промежуточные итоги
Подготовка к работе с манипулятором "мышь"
Общее описание драйвера мыши
Установка драйвера
Доступ к драйверу
Таблица 6 1 Список основных функций драйвера мыши
Управление курсором

Установочные команды
Информационные команды
Примеры использования этих функций
Обслуживание прерываний
Примеры использования этих функций
Специальные функции

Графические устройства

Цвет в коде точки
Работа с прямоугольными областями
Переадресация строк
Пример 7 13 Варианты подпрограмм для вычисления offsline
Пересылка в видеопамять
Пример 7 14 Подпрограмма пересылки
Пересылка из видеопамяти
Подпрограмма Savereg
Пример 7 15 Подпрограмма пересылки
Заливка прямоугольной области

Пример 7 16 Окрашивание прямоугольной
Многофункциональная подпрограмма
унки использующие палитру
Преобразование палитры в форматы HiColor
Расположение таблицы цветов
Таблица цветов нужна только при
Палитра формата rgb
Пример 7 17 Преобразование палитры rgb в 15разрядный код
Палитры формата bgr и bgr0
Пример 7 18 Преобразование палитры bgr в 15разрядный код

Универсальный вариант подпрограммы
Преобразование палитры в форматы True Color
Палитра формата rgb
Пример 7 19 Преобразование палитры bgr в 32разрядный код
Пример 7 20 Преобразование палитры rgb в 32разрядный код
Построение рисунков с использованием палитры
Построение строки рисунка
Пример 7 21 Построение строки
Упрощение подпрограммы
Пример 7 22 Перекодировка по таблице

Построение небольшого рисунка
Пример 7 23 Построение рисунка из файла небольшого размера
Построение большого рисунка
Пример 7 24 Построение рисунка
Учет лишних байтов
унки не использующие палитру
унки подготовленные в стандарте BMP
Способ построения рисунка
Коррекция адресов строк
Адрес начала последней строки

Размер порции данных
Подпрограмма BigBmp
Пример 7 25 Построение полноцветного рисунка формата BMP
Подпрограммы для построения строк
Пример 7 26 Варианты подпрограммы построения строки
унки подготовленные в стандарте PCX
Новое поле заголовка
Подпрограмма Unpack
Пример 7 27 Распаковка строки и преобразование в формат bgr
Подпрограмма PackDrw

Пример 7 28 Построение упакованного рисунка формата PCX
унки использующие палитру
Способы сжатия полноцветных рисунков
Сжатие по способу RLE
Таблица 7 5 Результат сжатия трех полноцветных рисунков
Таблица 7 5 иллюстрирует недостатки
Цветовое пространство YUV
Таблица 7 6 Уравнения для преобразования пространства цветов
Общая характеристика способа JPEG
Таблица 7 7 Качество рисунка и размер файла

Способы сжатия в JPEG
Файлы формата JPG
Наложение рисунков и спецэффекты
Спрайты (Sprites)
Фильтрация цвета (Chroma Keying)
Пример 7 29 Фильтрация цвета строки
Смешение цветов (alpha blending)
Особенности программной реализации
Пример 7 30 Альфаналожение строки
Наплыв изображения (Image Dissolve)

Прозрачная поверхность (Transparent Surface)
Пример 7 31 Наложение прозрачной строки заданного цвета
Пример 7 32 Наложение строки тумана заданного цвета
Общий случай смешения
Кодирование цвета
Среднее количество цветов
Таблица 7 1 Размещение базовых цветов в слове
Максимальное цветовое разрешение
Кодирование цвета
Таблица 7 2 Расположение базовых цветов в 32разрядном слове

Код в памяти и в регистре
Таблица 7 3 Расположение кодов цвета в памяти и в регистре
Сравнение с режимом HiColor
Разрядный код точки
Недостатки трехбайтового кода
Подпрограмма записи кода точки
Пример 7 1 Подпрограмма записи 24разрядного кода точки
Подпрограмма чтения кода точки
Пример 7 2 Подпрограмма чтения 24разрядного кода точки
Работа с двумя окнами

Когда используются подпрограммы
Координаты и адреса точек
Новые переменные
Примеры таких преобразований при
Подпрограмма Caladdr
Пример 7 3 Универсальная подпрограмма вычисления видеоадреса
Другой вариант Caladdr
Пример 7 4 Пересчет координат
Координаты и адреса смежных точек
Таблица 7 4 Приращения координат и адресов смежных точек

Адрес следующей строки
Линии строки и прямоугольные области
Подпрограммы для рисования линий
Пример 7 5 Цикл рисования горизонтальной
Ускорение цикла рисования
Подпрограмма Twopart
Пример 7 6 Рисование линии по частям в режимах HiColor
Пример 7 7 Ускоренное рисование линии в режимах HiColor I
Условное ассемблирование
Пример 7 8 Выбор варианта команды по заданному признаку

Трехбайтовый код точки
Пример 7 9 Рисование линии режим True Color трехбайтовый код
Подпрограммы для построения строк
Исходный вариант подпрограммы
Пример 7 10 Цикл построения строки в режиме HiColor
Вариант со строковой операцией
Пример 7 11 Улучшенный цикл построения
Универсальная подпрограмма пересылки
Пример 7 12 Универсальный (цикл
Обсуждение результатов

Графические устройства

Анализ основных полей заголовка
Для построения рисунка надо знать
Описание следующего шага
Пример А З Формирование исходных
Пример А 4 Вычисление значений переменных fwidth и rmndr

Дополнепие к примеру А З
Пример А 5 Ограничение значений переменных iwidth и iheight
Манипуляции с палитрой
Для окончания обработки заголовка
Характеристики палитры
Пример А 6 Определение характеристик палитры
Пример А 7 Преобразование и установка палитры
Построение таблицы цветов
Таблица цветов используется для
Пример А 8 Построение таблицы цветов для режимов True Color

Пример А 8 является несколько
Построение рисунков использующих палитру
Если задача выполнила действия
Построение рисунка сверху вниз
Здесь описан способ построения
Исходные предпосылки
Подпрограмма Smlbmp
Пример А 9 Построение рисунка формата ВМР сверху вниз
Построение рисунка снизу вверх
При работе с BMPфайлами произвольного

Описание предварительных действий
Подпрограмма BigBmp
Пример А 10 Построение рисунка формата BMP снизу вверх
Универсальная процедура построения рисунка
В данном разделе описана универсальная
Пример А 11 Начало построения рисунка формата BMP
Подпрограммы обработки строк
Пример А 12 Вывод строки формата 8 бит на точку (256 цветов)
Пример А 13 Вывод строки формата 4 бита на точку (16 цветов)
Пример А 14 Вывод строки формата 1 бита на точку (2 цвета)

Пример А 15 Простой вывод точки в режимах PPG
Пример А 15 рассчитан на те случаи
Пример А 16 Перекодировка точек в режимах direct color
Общая характеристика стандарта
BMP является сокращением слова
Заголовок файла для Windows
Первые точечные рисунки хранились
Таблица А 1 Заголовок дарфайла для Windows
Заголовок файла для OS/2
Таблица А 2 Заголовок вмрфайла для OS/2

Образ рисунка в файле
Исторически стандарт BMP предназначался
Сжатие образа рисунка
Общая схема обработки заголовка файла
Для построения на экране рисунка
Возможные отклонения от стандарта
Повидимому стандарты пишут для
Ввод спецификации и открытие файла
Для упрощения программирования
Открытие существующего файла

Подпрограмма открытия файла
Пример А 1 Подпрограмма ввода спецификации и открытия файла
Чтение заголовка файла и палитр
Действия предшествующие построению
Описание двух первых шагов
Пример А 2 Начало обработки заголовка BMPфайла

Содержание раздела