Windows 7 отображает элементы управления старых программ с помощью GDI или нового DWM / WDDM? - PullRequest
2 голосов
/ 23 октября 2009

В Windows XP Win32 API отображает элементы управления, используя GDI / GDI +. Сейчас у меня 7, поэтому, если я буду использовать функции API, будет ли автоматически обрабатываться рендеринг DWM / WDDM (то есть DirectX)? или он будет продолжать рендеринг с GDI?

Или, также, будет ли старое приложение, написанное с WinAPI, отображаться с помощью GDI также в Windows 7?

Заранее спасибо за помощь:)

Ответы [ 3 ]

8 голосов
/ 23 октября 2009

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

Действительно, ваше приложение на самом деле не замечает разницы. API все тот же API, что и раньше, и работает так, как вы ожидаете. Есть способы воспользоваться этим, но вы должны согласиться, чтобы действительно использовать его.

3 голосов
/ 23 октября 2009

Если ваше приложение написано для использования GDI, оно будет продолжать использовать GDI. Базовая реализация сильно изменилась (насколько я помню, большая часть аппаратного ускорения была удалена в Vista и возвращена в новой форме в Win7)

Но он не будет магически перенесен в Direct2D, нет.

0 голосов
/ 24 октября 2009

С точки зрения производительности, это тот же старый фарс, что и в обычном «Do Your Own Benchmarking» для всех операционных систем. Но почти десятилетняя ОС для всего, что GDI по-прежнему захлестывает Windows7, и множество приложений будут невероятно более отзывчивыми на XP ... Печаль ... особенно, если учесть, что перевод такого старого API (как совместимого интерфейс) должен быть тривиальным для любого нового драйвера или технологии дисплея.

Очевидно, что некоторые операции, такие как блиттинг, поддерживаются, но посмотрите на результат вашего целевого 2D GDI-приложения и судите сами.

Вот некоторые наблюдения, но, пожалуйста, сделайте свое собственное для дюжины сценариев и сравните, особенно, если он интенсивно использует GDI, как миллион аудио / видео приложений (неудивительно, что мальчики iFruit получают долю).

http://www.passmark.com/forum/showthread.php?t=2233

И хотя вы найдете все типичные и пушистые пояснения к блогу MSDN, которые носят «технический» характер (т. Е. Поверхностная ерунда), причина очень проста: купите новую операционную систему, добавьте старый API и усложните ее. позволяя новым API работать с ним (но не выгодно старому, что легко выполнимо путем предоставления новых dll и .lib).

Для одного урока истории и того, как трудно было переводить вызовы GDI в Direct2D или использовать libgdiplus из Mono и извлекать идеи и т. Д., Вот пропаганда:

http://blogs.msdn.com/directx/archive/2009/05/12/2d-drawing-apis-in-windows.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...