- •«Компьютерная графика»
- •1. Графический процессор. Структура графического процессора g80
- •2. Цифровой сигнальный процессор
- •3. Особенности архитектуры
- •4. Устройство цсп
- •5. Классификация цсп по архитектуре
- •6. Кластеры процессоров цифровой обработки
- •7. Аппаратно-программный комплекс vliw
- •9. Компоненты графической системы Windows
- •10. Компоненты режима ядра
- •11. Архитектура графической системы Windows (gdi)
- •12. Архитектура directx
- •13. Архитектура directdraw
- •14. Архитектура системы печати
- •15. Ве́кторная гра́фика
- •16. Растровое изображение
- •17. Цветовая модель rgb
- •18. Цветовая модель cmyk
- •19. Цветовая модель hsv и hsl
- •20. Цифровая обработка сигналов
- •21. Преобразования Фурье
- •22. Основы opengl
- •23. Графический конвейер OpenGl
- •24. Организация OpenGl. Сопутствующие api
- •25. Архитектура Windows Presentation Foundation
- •26. Организация шейдеров
- •27. Игровой движок
- •28. Графический движок
- •29. Воксел. Доксел
- •30. Спрайт
- •32. Графический ускоритель Intel gma
- •33. Графическое ядро Core i5
- •34. Целочисленный алгоритм Брезенхема
- •35. Алгоритм Брезенхема для генерации окружности
- •36. Буферы кадра
- •37. Точки и линии. Преобразование точек и линий
- •38. Полярная и декартовая система координат
- •39. Трехмерные преобразования
- •40. Трехмерный сдвиг. Трехмерные вращения.
- •41. Закраска Гуро
- •42. Закраска Фонга
13. Архитектура directdraw
Библиотека DirectDraw предоставляет единый программный интерфейс для работы с различными видеоадаптерами. DirectDraw - отвечает за быстрый вывод, перемещение и масштабирование двухмерной графики, установку видеорежимов, выбор видеодрайверов. Поддерживает практически любые видеорежимы и разрешения. Главное отличие между DirectDraw и GDI заключается в том, что DirectDraw позволяет работать непосредственно с видеоадаптером, a GDI - наоборот, ограждает вас от этого! Как видите, для рисования трехмерного объекта у приложения есть четыре возможности: GDI, OpenGL, Абстрактный режим Direct3D, DirectDraw.
DirectDraw можно рассматривать как специализированную версию GDI. Первая стадия специализации заключается в том, что вывод направляется только на видеоадаптер, а не на принтер, плоттер или любое другое из существующих графических устройств. Второй стадией является сокращение функциональных возможностей, поддерживаемых GDI. B DirectDraw нет прямой поддержки режимов отображения, мировых преобразований, шрифтов и текста, линий и кривых; работа осуществляется только с растровыми изображениями. Последней стадией является реализация ограниченного подмножества с учетом аппаратного ускорения и добавлением возможностей, имеющих важное значение для игр и мультимедийного программирования.
DirectDraw реализует семь основных интерфейсов, два из которых существуют в нескольких версиях.
I DirectDraw — базовый интерфейс DirectDraw, на основе которого могут создаваться другие объекты DirectDraw, управление поверхностями, выбор разрешения и глубины цвета, получение информации о состоянии экрана, выделение памяти и т. д.
Интерфейс IDirectDrawSurface обеспечивает все операции вывода в DirectDraw. В этот интерфейс входят операции с поверхностями — получение информации о возможностях, блокировка и ее снятие, выбор палитры, отсечение и т. д.
Интерфейс IDirectDrawPalette поддерживает создание и непосредственные операции с цветовой палитрой на 256-цветном экране.
Интерфейс IDirectDrawClipper управляет отсечением поверхностей DirectDraw с использованием списков отсечения (clip lists), представленных структурами RGNDATA GDI API.
Интерфейс IDirectDrawColorControl управляет цветом поверхностей и оверлеев за счет регулировки яркости, контраста, оттенка, насыщенности и гамма коррекции.
Интерфейс IDirectDrawGammaControl управляет процессом гамма коррекции, в ходе которого значения цветов в кадровом буфере преобразуются в цвета, передаваемые аппаратному цифро-аналоговому преобразователю (DAC, digitalto-analog converter).
Интерфейс IDirectDrawVideoPort обеспечивает передачу видеоданных с аппаратного видеопорта на поверхность DirectDraw. С его помощью программистможет управлять оборудованием через видеопорт.
14. Архитектура системы печати
Интерфейс Win32 GDI API задумывался как аппаратно-независимый API, способный выводить прямые, кривые, растровые изображения и текст на любом графическом устройстве, для которого имеется соответствующий драйвер. Однако принтеры составляют особый класс графических устройств и заслуживают особого внимания. Ниже перечислены важнейшие отличия принтеров от других графических устройств.
Пользователи обычно печатают не одну страницу, а целый документ, задавая при этом специальные параметры — качество печати, размер бумаги, режим двусторонней печати, количество копий и т. д. GDI содержит специальный принтерный API для постраничной печати, а также структуру DEVMODE для определения всех параметров печати. Такие аспекты, как разбиение документа на страницы и выбор размеров полей, находятся под контролем приложения.
Принтер обычно обладает гораздо большим разрешением (от 300 до 2400 dpi), чем экран монитора (от 75 до 120 dpi). Это приводит к увеличению объема обрабатываемых данных и возможной нехватке памяти для одновременного воспроизведения всей страницы. Механизм GDI позволяет драйверу принтера принимать данные небольшими частями (полосами) посредством спулинга EMF (расширенных метафайлов).
Принтер обычно работает медленно, совместно используется несколькими участниками рабочей группы и не всегда подключается к локальному компьютеру. Спулер системы Windows следит за тем, чтобы приложения как можно раньше завершали свою часть вывода, чтобы принтер мог обслуживать несколько заданий печати и чтобы группы пользователей совместно работали с принтером в локальном окружении, по сети и даже по адресу URL.
Принтеры «говорят» на разных языках — PCL (принтеры HP), ESC/P (принтеры Epson), PostScript (принтеры с поддержкой PostScript) и HPGL (плоттеры). В этом отношении они принципиально отличаются от видеоадаптеров, работающих с растровыми изображениями. Microsoft предоставляет несколько «универсальных» драйверов, которые могут настраиваться производителями оборудования в соответствии со специфическими требованиями их устройств.
В архитектуре печати Windows NT/2000 центральное место занимает спулер печати, поддерживаемый GDI и драйвером принтера. Чтобы создать новое задание печати, пользовательское приложение обращается к точкам входа API, экспортируемым GDI и DLL клиента спулера. GDI и спулер (с помощью драйвера принтера) обрабатывают задание печати и посылают данные на устройство создания жестких копий, будь то лазерный или струйный принтер, плоттер или факс.
Графические команды передаются GDI в виде вызовов GDI API, которые обычно сохраняются в расширенном метафайле (EMF). EMF и другой файл с текущими параметрами печати передаются системному процессу службы спулера (spools.exe). На этой стадии печать документа на уровне приложения завершается. Пользователь может продолжить работу с приложением, а дальнейшая печать документа будет осуществляться спулером. Сначала спулер направляет задание провайдеру печати, который обслуживает конкретный принтер. Локальные принтеры обслуживаются локальным провайдером печати (localspl.dll), а сетевые принтеры обслуживаются провайдером печати сетей Windows (win32spl.dll). Если принтер подключен к удаленному компьютеру, то файлы спулера пересылаются на удаленный компьютер сетевыми службами ОС, где они поступают к спулеру в виде задания для локального компьютера.