Informacje o Direct2D
W tym temacie przedstawiono direct2D, interfejs API, który zapewnia deweloperom Win32 możliwość wykonywania zadań renderowania grafiki 2-W o najwyższej wydajności i jakości wizualnej.
Co to jest Direct2D?
Direct2D to przyspieszony sprzętowo, bezpośredni interfejs API grafiki 2-W, który zapewnia wysoką wydajność i wysokiej jakości renderowanie geometrii 2-W, map bitowych i tekstu. Interfejs API Direct2D jest przeznaczony do współdziałania z istniejącym kodem korzystającym z interfejsu GDI, GDI+lub Direct3D.
Direct2D jest przeznaczony głównie do użytku przez następujące klasy deweloperów:
- Deweloperzy dużych, natywnych aplikacji w skali przedsiębiorstwa.
- Deweloperzy, którzy tworzą zestawy narzędzi i biblioteki sterujące do użycia przez deweloperów podrzędnych.
- Deweloperzy, którzy potrzebują renderowania grafiki 2-D po stronie serwera.
- Deweloperzy korzystający z grafiki Direct3D i potrzebujący prostego renderowania 2D i tekstu o wysokiej wydajności dla menu, elementów interfejsu użytkownika i wyświetlaczy przeziernych (HUD).
Dlaczego direct2D?
Podstawowe motywacje do tworzenia nowego interfejsu API grafiki 2-W w w systemie Microsoft Windows obejmują następujące elementy:
- Aby nadążyć za rosnącym poziomem bogactwa wizualnego, do którego są przyzwyczajeni użytkownicy systemu Windows.
- Aby umożliwić deweloperom pisanie kodu renderowania 2-D, który skalowalnie wykorzystuje sprzęt przetwarzania grafiki komputera, na którym działa.
- Aby umożliwić deweloperom pisanie kodu do renderowania grafiki 2-W, która może być uruchamiana w kontekście usługi.
W ostatnich latach użytkownicy końcowi zaczęli oczekiwać większej wierności wizualnej w środowiskach cyfrowych. Ten trend jest odzwierciedlany w elektroniki konsumenckiej. Urządzenia GPS, urządzenia do odtwarzania multimediów, telefony komórkowe i kamery cyfrowe zapewniają stale bogatsze doświadczenia rok po roku. Ten trend można również zobaczyć w różnorodności treści graficznych w filmie, telewizji, grach wideo i w Internecie. Aby nadążyć za tymi zmianami, deweloperzy są konsekwentnie proszeni o wprowadzenie istniejących aplikacji systemu Windows do następnego poziomu bogactwa wizualnego.
Procesory graficzne w nowoczesnych komputerach z systemem Windows również stale ewoluują, napędzane postępami w grafice gier wideo i częściach środowiska systemu Windows, takich jak Windows Media Center i Aero. Niektóre aplikacje systemu Windows mogą korzystać z nowoczesnych procesorów GPU przy użyciu usług Microsoft Direct3D i Windows Presentation Foundation (WPF). Chociaż direct3D obsługuje wysokiej klasy aplikacje graficzne 3-W i WPF zaspokaja potrzeby deweloperów platformy .NET, istnieją luki dla deweloperów, którzy mają duże bazy kodu renderowania kodu oparte na GDI i GDI+ lub chcą włączyć wysokiej jakości grafiki 2-W w swoich aplikacjach opartych na direct3D.
Na koniec potrzeba graficznego interfejsu API, który może być używany w usłudze, stał się nowym wymaganiem dla deweloperów pracujących w scenariuszach programowania w przedsiębiorstwie i sieci Web. Istniejące interfejsy API renderowania koncentrują się na renderowaniu po stronie klienta podczas jednej sesji użytkownika. W związku z tym mogą one brakować w obszarach niezawodności i skalowalności, gdy są używane w kontekście usługi. Aby rozwiązać ten problem, wymagany jest nowy interfejs API.
Wysoka wydajność z maksymalną dostępnością
Direct2D to biblioteka trybu użytkownika utworzona przy użyciu interfejsu API Direct3D 10.1. Oznacza to, że aplikacje Direct2D korzystają z przyspieszonego sprzętowo renderowania na nowoczesnych głównych procesorach GPU. Przyspieszanie sprzętowe jest również osiągane na wcześniejszym sprzęcie Direct3D 9 przy użyciu renderowania Direct3D 10-level-9. Ta kombinacja zapewnia doskonałą wydajność sprzętu graficznego na istniejących komputerach z systemem Windows.
Uwaga
Począwszy od systemu Windows 8, direct2D jest kompilowany przy użyciu interfejsu API Direct3D 11.1.
Na poniższym diagramie przedstawiono warstwową architekturę direct2D.
W scenariuszach, w których użycie przyspieszania sprzętowego nie jest możliwe, funkcja Direct2D zawiera rasterizator oprogramowania o wysokiej wydajności. Podczas renderowania w oprogramowaniu aplikacje korzystające z funkcji Direct2D mają znacznie lepszą wydajność renderowania niż w przypadku interfejsu GDI+ i podobnej jakości wizualnej. Rasterizator oprogramowania jest również przeznaczony do użytku w kontekście usługi.
Zawartość renderowana przy użyciu funkcji Direct2D może być również wyświetlana zdalnie przy użyciu infrastruktury protokołu RDP (Remote Desktop Protocol) w systemie operacyjnym Windows 7. Deweloperzy mogą wybrać, czy renderowanie jest obsługiwane przez procesor GPU na komputerze wyświetlania, czy renderowane lokalnie i przesyłane jako mapy bitowe. Ten wybór można dokonać na podstawie wymaganej szybkości wypełnienia i ilości elementów pierwotnych grafiki renderowanych. Gdy komputer wyświetlania korzysta z systemu operacyjnego wcześniejszego niż Windows 7, renderowanie zdalnego wyświetlania odbywa się przez przesyłanie map bitowych za pośrednictwem sieci.
Udostępniając pojedynczy interfejs API, który łączy wydajność Direct3D z wysoką dostępnością dzięki rezerwowemu oprogramowaniu, pulpitem zdalnym i renderowaniem usług, Direct2D umożliwia deweloperom korzystanie z jednej implementacji do renderowania o wysokiej wydajności w wielu różnych scenariuszach.
Jakość wizualizacji
Aplikacje korzystające z funkcji Direct2D do grafiki mogą dostarczać wyższą jakość wizualizacji niż to, co można osiągnąć przy użyciu interfejsu GDI. Funkcja Direct2D używa antyaliasingu dla poszczególnych elementów pierwotnych w celu zapewnienia wygładzonych krzywych i linii w renderowanej zawartości. Zapewniona jest także pełna obsługa przezroczystości i mieszania alfa podczas renderowania prymitywów 2-D. Poniższe obrazy porównują zawartość aliasowaną renderowaną przy użyciu interfejsu GDI (po lewej stronie) z zawartością antyaliasowaną renderowaną przez direct2D (po prawej stronie).
Deweloperzy mogą określać aliasowe renderowanie grafiki wektorowej. Jest to używane w scenariuszach, w których konieczne jest przyciąganie do ostrych krawędzi pikseli, np. w przypadku elementów interfejsu użytkownika, takich jak wskaźniki lub linijki, jeśli trzeba dopasować styl GDI danych wyjściowych lub jeśli wygładzanie krawędzi będzie prowadzone dalej w procesie renderowania z użyciem techniki Multisample Antialiasing lub innego mechanizmu.
Współdziałanie
Zintegrowanie renderowania opartego na technologii Direct2D ułatwia deweloperom współdziałanie na poziomie powierzchni z interfejsami GDI i Direct3D. Aplikacje, które renderują zawartość głównie za pomocą GDI, GDI+lub Direct3D, mogą zacząć od używania direct2D do renderowania określonych obszarów aplikacji, a wraz z upływem czasu przejść do modelu, w którym renderowanie jest wykonywane głównie za pośrednictwem direct2D, przy użyciu interfejsu GDI głównie w przypadku wtyczek lub starszej rozszerzalności.
Funkcja Direct2D ułatwia również korzystanie z DirectWrite w celu uzyskania tekstu wysokiej jakości oraz zaawansowanych funkcji przetwarzania obrazów składnika Microsoft Windows Imaging Component (WIC).
Aby uzyskać więcej informacji na temat współdziałania direct2D, zobacz sekcję Współdziałanie zestawu SDK Direct2D.
Streszczenie
Technologia Microsoft Direct2D umożliwia deweloperom tworzenie funkcji graficznych 2-D w swoich aplikacjach, które zapewniają lepszą jakość wizualną niż GDI oraz charakteryzują się wydajnością skalującą się z nowoczesnymi kartami graficznymi (GPU). Model współdziałania Direct2D umożliwia deweloperom selektywne migrowanie części ich aplikacji obok renderowania opartego na GDI, GDI+ lub Direct3D.
Tematy pokrewne
-
Przewodnik Szybki start dotyczący Direct2D dla systemu Windows 8
-
Omówienie interfejsu API Direct2D