Jump to content

Интерфейс графического устройства

(Перенаправлен с принтера GDI )
Интерфейс графического устройства в архитектуре Windows NT
Например, GDK использует GDI .

Интерфейс графического устройства ( GDI ) является устаревшим компонентом Microsoft Windows, ответственной за представление графических объектов и передачи их на выводы, такие как мониторы и принтеры . Это было заменено DirectDraw API, а затем Direct2D API. [ Цитация необходима ] Приложения Windows используют Windows API для взаимодействия с GDI, для таких задач, как линии рисования и кривые, визуализации шрифтов и обработки палитров . Пользовательская подсистема Windows использует GDI для отображения таких элементов пользовательского интерфейса, как оконные рамы и меню. Другие системы имеют компоненты, похожие на GDI; Например: Mac OS имеет QuickDraw , а Linux и Unix имеют системы x Window протокол ядра .

Наиболее значительными преимуществами GDI по сравнению с более прямыми методами доступа к оборудованию, возможно, являются его возможности масштабирования и абстрактное представление целевых устройств. Используя GDI, можно нарисовать на несколько устройств, таких как экран и принтер, и ожидать надлежащего воспроизведения в каждом случае. Эта возможность находится в центре большинства « То, что вы видите, это то, что вы получаете » для Microsoft Windows.

Простые игры, которые не требуют быстрой графики, могут использовать GDI. Тем не менее, GDI относительно сложно использовать для расширенной анимации, не имеет представления о синхронизации с отдельными видео кадрами в видеокарте , и ему не хватает оборудования для 3D. Вместо этого современные игры обычно используют DirectX , Vulkan или OpenGL .

Технические детали

[ редактировать ]

В GDI контекст устройства (DC) определяет атрибуты текста и изображений для устройства вывода, например, экрана или принтера. GDI поддерживает фактический контекст. Генерация вывода требует ручки в контексте устройства (HDC). После генерации вывода можно было выпустить ручку.

GDI использует алгоритм рисования линии Бресенхэма, чтобы нарисовать псевдонима. [ 1 ]

История версий

[ редактировать ]

Ранние версии

[ редактировать ]

GDI присутствовал в начальном выпуске Windows. Программы MS-DOS манипулировали графическим оборудованием с использованием программного обеспечения (иногда через видео BIOS ) и путем непосредственно манипулирования видео памяти . Код, написанный таким образом, ожидает, что он является единственным пользователем видео памяти, которая не была устойчивой в многозадаленной среде , такой как Windows. Журнал Byte , в декабре 1983 года, обсудил планы Microsoft о системе для вывода графики как принтерам, так и мониторам с одним и тем же кодом в предстоящем первом выпуске Windows. [ 2 ]

В Windows 3.1x и Windows 9x GDI может использовать битовые функции Blit для 2D -ускорения, если видеокарты . установлен подходящий драйвер [ 3 ]

С введением Windows XP GDI + дополнял GDI. GDI+был написан в C ++. Он добавляет 2D-графику с анти-альцами, координаты с плавающей точкой, затенение градиента, более сложное управление путями, внутреннюю поддержку современных форматов графики, таких как JPEG и PNG , и поддержка состава аффинных преобразований в 2D-визе. GDI+ использует значения RGBA для представления цвета. Использование этих функций очевидно в компонентах Windows XP, таких как Microsoft Paint , изображение Windows и зритель факса , мастер фотографии и заставка My Pictures Slideshow. Их присутствие в основном графическом уровне значительно упрощает реализации вектор-графических систем, таких как Adobe Flash или SVG . Кроме того, .NET Framework предоставляет управляемый интерфейс для GDI+ через System.Drawing Пространство имен .

В то время как GDI+ включен в Windows XP, а затем динамическая библиотека GDI+ также может быть отправлена ​​с приложением и используется в старых версиях Windows. [ 4 ]

Из -за дополнительной обработки текста и возможностей независимости разрешения в GDI+процессор предпринимает текстовый рендеринг. [ 5 ] Результат-это порядок медленнее, чем у аппаратного ускорения GDI. [ 6 ] Крис Джексон опубликовал некоторые тесты, указывающие, что код рендеринга текста, который он написал, может отображать 99 000 глифов в секунду в GDI, но тот же код с использованием GDI+ составлял 16 600 глифов в секунду.

GDI+ аналогична (в целях и структуре) с подсистемой Apple GX GX , с открытым исходным кодом а также библиотеки Libart и Cairo .

В Windows Vista все приложения Windows, включая приложения GDI и GDI+, работают в новом двигателе Compositing, Desktop Window Manager (DWM), который ускоряется в оборудовании. Таким образом, сам GDI больше не ускоряется в оборудовании. [ 7 ] [ 8 ] [ 9 ] Из-за характера операций композиции перемещения окна могут быть быстрее или более отзывчивы, поскольку базовый контент не должен быть повторно подготовлен применением. [ 8 ]

Windows 7 включает в себя ускорение аппаратного обеспечения GDI для операций Blitting в модели драйвера дисплея Windows v1.1 . Это улучшает производительность GDI и позволяет DWM использовать локальную видео память для композиции, тем самым уменьшая следы памяти и увеличивая производительность графических операций. Большинство примитивных операций GDI по-прежнему не ускоряются аппаратно, в отличие от Direct2d . GDI+ продолжает полагаться на программный рендеринг в Windows 7. [ 10 ]

Принтеры GDI

[ редактировать ]

Принтер GDI или WinPrinter (аналогично WinModem ) - это принтер, предназначенный для принятия вывода с хост -компьютера, работающего с Windows. Хост -компьютер выполняет всю обработку печати: GDI отдает страницу как растровую карту, которую драйвер принтера получает, обрабатывает и отправляет на соответствующий принтер. [ 11 ] [ 12 ] Комбинация GDI и водителя является двунаправленной; Они получают информацию от принтера, например, готово ли она к печати или находится вне бумаги.

Принтеры, которые не полагаются на GDI, требуют аппаратного обеспечения, прошивки и памяти для рендеринга страниц, в то время как принтер GDI использует хост -компьютер для этого. Тем не менее, принтер с собственным языком управления может принять ввод от любого устройства с подходящим драйвером, в то время как принтер GDI требует компьютера, работающего в Windows. Принтеры GDI могут быть доступны для компьютеров в сети, если они подключены в виде общих принтеров на компьютере, который включен и запускается Windows. Некоторые «общие» драйверы GDI, такие как pnm2ppa были написаны; Они стремятся сделать принтеры GDI совместимыми с операционными системами, не являющимися Windows, таким как FreeBSD , но они не могут поддерживать все принтеры. [ 11 ]

Чтобы разрешить более простое создание драйверов для WinPrinters, драйвер универсального принтера Microsoft был создан . Это позволяет поставщикам принтеров писать общее описание принтера (GPD) «Minidrivers», которые описывают возможности и команды принтера, установленные в явном тексту, а не для разработки драйвера режима ядра.

Microsoft отошла от этой модели печати с открытой спецификацией бумаги XML .

Ограничения

[ редактировать ]

Каждое окно потребляет объекты GDI. По мере увеличения сложности окна с дополнительными функциями, такими как кнопки и изображения, использование объекта GDI также увеличивается. Когда используется слишком много объектов, Windows не может нарисовать больше объектов GDI, что приводит к неправильному поведению программного обеспечения и замороженной и не реагирующей программы. [ 13 ] Многие приложения также неверно закодированы и не могут выпустить объекты GDI после использования, что дополнительно добавляет к проблеме. [ 14 ] Общее количество доступных объектов GDI варьируется от одной версии Windows до следующей: Windows 9x имел предел в 1200 общих объектов; Windows 2000 имеет предел 16 384 объектов; и Windows XP, а затем имеют настраиваемый предел (через реестр), который по умолчанию по умолчанию до 10 000 объектов на процесс (но теоретический максимум 65 536 для всего сеанса). [ 15 ] [ 16 ] Windows 8, а затем увеличьте ограничение объекта GDI до 65 536 на сеанс входа в систему пользователя.

Более ранние версии Windows, такие как Windows 3.1 и Windows 98, включали в себя программу счетчика ресурсов, чтобы позволить пользователю контролировать, сколько из общих системных ресурсов GDI было использовано. Этот счетчик ресурсов потреблял себя GDI. Более поздние версии, такие как Windows 2000 и Windows XP, могут сообщить об использовании объектов GDI для каждой программы в диспетчете задач, но они не могут сообщить пользователю общую емкость GDI.

Переполненная емкость GDI может повлиять на сами Windows, предотвращая открытие новых окон, отображение меню и появление блоков оповещения. Ситуация может быть трудно очистить и потенциально может потребовать принудительного сброса системы, поскольку она предотвращает функционирование основных системных программ. В Windows 8 и 8.1 принудительное отключение происходит в результате переполнения емкости GDI вместо перезагрузки.

Преемник

[ редактировать ]

Direct2D является преемником GDI и GDI+. Его брат, прямой написание , заменяет Uniscribe . Они были отправлены с Windows 7 и Windows Server 2008 R2 и были доступны для Windows Vista и Windows Server 2008 (с установленным обновлением платформы). Позже, Microsoft разработала Win2d , бесплатную и открытую библиотеку GDI, подобную GDI. Целевая аудитория Win2D - разработчики, которые используют C ++, C#и Visual Basic.net для разработки универсальных приложений платформы Windows . [ 17 ]

Смотрите также

[ редактировать ]

Примечания и ссылки

[ редактировать ]
  1. ^ Стивен, белый; Дэвид, Коултер; Майк, Джейкобс (31 мая 2018 года). «Сравнение аппаратного ускорения Direct2D и GDI» . Разработчик Windows . Microsoft .
  2. ^ Батлер, Джон (декабрь 1983 г.). «Независимый от устройства графический выход для Microsoft Windows» . Байт ​п. 49 ​Получено 20 октября 2013 года .
  3. ^ https://www.dosdays.co.uk/media/cirrus_logic/CL-GD543X_Applications_and_Eratta_Book_Apr94.pdf . {{cite web}}: Отсутствует или пусто |title= ( помощь )
  4. ^ Платформа SDK перераспределяется: GDI+
  5. ^ «2D API -интерфейс в Windows -» . Блог DirectX Developer . Блоги MSDN. 12 мая 2009 г. Получено 19 июля 2012 года .
  6. ^ Джексон, Крис. «GDI против GDI+ текстовый рендеринг производительность» . Семантическая концепция Криса Джексона . Microsoft.
  7. ^ MSDN: Сравнение аппаратного ускорения Direct2D и GDI
  8. ^ Jump up to: а беременный GDI не ускорено в Windows Vista
  9. ^ Слоистые окна ... SW иногда быстрее HW . Авалит в блогах MSDN.
  10. ^ Томас Олсен (29 октября 2008 г.). «Представление Microsoft Direct2d API» .
  11. ^ Jump up to: а беременный «Общий принтер GDI» . Открытая печать . Фонд Linux . Получено 21 июля 2021 года .
  12. ^ «Принтеры только для Windows» . Проект документации Linux . Получено 29 октября 2019 года .
  13. ^ Microsoft Knowledgebase Статья 838283 - Меню настольных приложений неправильно отображаются, если процесс превышает квоту объекта GDI в Windows XP или в Windows 2000 http://support.microsoft.com/kb/838283
  14. ^ Microsoft Developer Network Blog-GDI утечка в Outlook 2007 вызывает проблемы, когда использование GDI достигает 10 000 объектов http://blogs.msdn.com/rgregg/archive/2007/09/03/outlook-2007-gdi-leak-hotfix.aspx
  15. ^ Microsoft Developer Network - объект GDI ограничивает http://msdn.microsoft.com/en-us/library/ms724291(vs.85).aspx
  16. ^ Microsoft Base Base Article 894500 - .NET Программы, разработанные на более новых операционных системах NT, могут неисправности по старой Win 95/Win 98/Win Me из -за более низких ограничений использования GDI http://support.microsoft.com/kb/89450000
  17. ^ "Win2d" . Microsoft/Win2d Repo . Microsoft . Получено 21 июля 2021 года - через github.com .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 917fd7fef5f107d2c8f940be8e10b4d9__1716447180
URL1:https://arc.ask3.ru/arc/aa/91/d9/917fd7fef5f107d2c8f940be8e10b4d9.html
Заголовок, (Title) документа по адресу, URL1:
Graphics Device Interface - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)