Udostępnij za pośrednictwem


Efekt zarządzania kolorami

Użyj efektu zarządzania kolorami, aby przekształcić obraz z jednego profilu kolorów ICC (International Color Consortium) na inny. Efekt przekształca obraz zgodnie ze specyfikacją ICC.

Identyfikator CLSID dla tego efektu jest CLSID_D2D1ColorManagement.

Właściwości efektu

Nazwa wyświetlana i wyliczenie indeksu Opis
SourceContext
D2D1_COLORMANAGEMENT_PROP_SOURCE_COLOR_CONTEXT
Informacje o przestrzeni kolorów źródła. Typ to ID2D1ColorContext.
Wartość domyślna to NULL.
SourceIntent
D2D1_COLORMANAGEMENT_PROP_SOURCE_RENDERING_INTENT
Która intencja renderowania ICC ma być używana. Typ to D2D1_COLORMANAGEMENT_RENDERING_INTENT.
Wartość domyślna to D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCEPTUAL.
DestinationContext
D2D1_COLORMANAGEMENT_PROP_DESTINATION_COLOR_CONTEXT
Informacje o przestrzeni kolorów miejsca docelowego. Typ to ID2D1ColorContext.
Wartość domyślna to NULL.
DestinationIntent
D2D1_COLORMANAGEMENT_PROP_DESTINATION_RENDERING_INTENT
Która intencja renderowania ICC ma być używana. Typ to D2D1_COLORMANAGEMENT_RENDERING_INTENT.
Wartość domyślna to D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCEPTUAL.
AlphaMode
D2D1_COLORMANAGEMENT_PROP_ALPHA_MODE
Jak interpretować dane alfa zawarte w obrazie wejściowym. Typ jest D2D1_COLORMANAGEMENT_ALPHA_MODE.
Wartość domyślna to D2D1_COLORMANAGEMENT_ALPHA_MODE_PREMULTIPLIED.
Jakość
D2D1_COLORMANAGEMENT_PROP_QUALITY
Poziom jakości transformacji. Typ jest D2D1_COLORMANAGEMENT_QUALITY.
Wartość domyślna to D2D1_COLORMANAGEMENT_QUALITY_NORMAL.

Tryby intencji renderowania

Wyliczenie Opis
D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCEPTUAL Efekt kompresuje lub rozszerza pełną gamę kolorów obrazu, aby wypełnić gamę kolorów urządzenia, aby wygenerować przekonujące dane wyjściowe, które zachowują szczegóły kolorów, ale mogą poświęcić dokładność kolorów. Jest to przydatne w przypadku ogólnego odtwarzania treści w prawdziwym życiu, takich jak zdjęcia.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_RELATIVE_COLORIMETRIC Efekt dostosowuje wszelkie kolory znajdujące się poza gamą, które urządzenie wyjściowe może renderować do najbliższego koloru, który można renderować. Nie zachowuje białego punktu.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_SATURATION Efekt zachowuje nasycenie czystych kolorów na obrazie kosztem odcieni i lekkości. Jest to przydatne w przypadku grafiki, takich jak wykresy i diagramy.
D2D1_COLORMANAGEMENT_RENDERING_INTENT_ABSOLUTE_COLORIMETRIC Efekt dostosowuje wszelkie kolory znajdujące się poza gamą, które urządzenie wyjściowe może renderować do najbliższego koloru, który można renderować. Efekt nie zmienia kolorów w gamie i zachowuje biały punkt.

Tryby alfa obrazu wejściowego

Wyliczenie Opis
D2D1_COLORMANAGEMENT_ALPHA_MODE_PREMULTIPLIED Efekt zakłada, że tryb alfa jest premultiplied.
D2D1_COLORMANAGEMENT_ALPHA_MODE_STRAIGHT Efekt zakłada, że tryb alfa jest prosty.

D2D1_GAMMA1_G2084 zmiany zachowania

Jeśli aplikacja używa przestrzeni D2D1_GAMMA1_G2084 lub jednej z wartości wyliczenia DXGI_COLOR_SPACE_TYPE używających przestrzeni kolorów SMPTE ST.2084 (Perceptual Quantizer), aplikacja zamierza pracować z danymi HDR.

ID2D1DeviceContext5::CreateColorContextFromSimpleColorProfile i ID2D1DeviceContext5::CreateColorContextFromDxgiColorSpace interfejsy API tego nie uwzględniają; natomiast zawartość HDR jest skalowana w celu dopasowania do zakresu 0-1 podczas operacji G2084 DeGamma.

W praktyce zawartość zakodowana w tej przestrzeni gamma używa odwołania WhiteLevel z 10 000 Nits, które normalnie byłyby reprezentowane w CCCS jako 10 000 / 80 = 125.0. Dlatego, aby lepiej ułatwić aplikację, najprostsza jest konwersja gamma, aby również skalować lumincję o współczynnik 125. Od systemu Windows 10 w wersji 1809 (10.0; Kompilacja 17763), zachowanie efektu zarządzania kolorami jest takie, że stosuje to skalowanie. Oznacza to, że jako deweloper nie musisz stosować drugiego efektu dostosowania na poziomie białym do potoku.

Zgodność ze specyfikacją ICC

Efekt zarządzania kolorami jest zgodny ze specyfikacją ICC w wersji 4.3, z następującymi ograniczeniami:

  • Efekt obsługuje 1, 3 i 4 przestrzenie kolorów kanału.
  • Efekt nie obsługuje profilów ColorSpace ani Named Color.

Zachowanie kanału alfa

Ogólnie rzecz biorąc, efekt ustawia wartość alfa na 1 (nieprzezroczyste), jeśli na obrazie źródłowym nie ma danych alfa, a dane alfa zostaną odrzucone, jeśli nie ma miejsca na obrazie docelowym. W poniższej tabeli opisano zachowanie alfa.

Przestrzeń kolorów źródła, format pikseli Docelowa przestrzeń kolorów, format pikseli Zachowanie alfa
1 kanał, format pikseli języka R
1 kanał, format pikseli języka R (Brak danych alfa)
1 kanał, format pikseli RGBA Dane alfa są ustawione na 1 (nieprzezroczyste)
3 kanał, format pikseli RGBA Dane alfa są ustawione na 1 (nieprzezroczyste)
4 kanał, format pikseli RGBA (Brak danych alfa)
1 kanał, format pikseli RGBA
1 kanał, format pikseli języka R Dane alfa są odrzucane
1 kanał, format pikseli RGBA Dane alfa są przekazywane
3 kanał, format pikseli RGBA Dane alfa są przekazywane
4 kanał, format pikseli RGBA Dane alfa są odrzucane
3 kanał, format pikseli RGBA
1 kanał, format pikseli języka R Dane alfa są odrzucane
1 kanał, format pikseli RGBA Dane alfa są przekazywane
3 kanał, format pikseli RGBA Dane alfa są przekazywane
4 kanał, format pikseli RGBA Dane alfa są odrzucane
4 kanał, format pikseli RGBA
1 kanał, format pikseli języka R (Brak danych alfa)
1 kanał, format pikseli RGBA Dane alfa są ustawione na 1 (nieprzezroczyste)
3 kanał, format pikseli RGBA Dane alfa są ustawione na 1 (nieprzezroczyste)
4 kanał, format pikseli RGBA (Brak danych alfa)

Tryby jakości

Tryb Opis
D2D1_COLORMANAGEMENT_QUALITY_PROOF Tryb najniższej jakości. Ten tryb wymaga poziomu funkcji 9_1 lub nowszego.
D2D1_COLORMANAGEMENT_QUALITY_NORMAL Normalny tryb jakości. Ten tryb wymaga poziomu funkcji 9_1 lub nowszego.
D2D1_COLORMANAGEMENT_QUALITY_BEST Najlepszy tryb jakości. Ten tryb wymaga poziomu funkcji 10_0 lub nowszego, a także precyzji zmiennoprzecinkowych. Ten tryb obsługuje precyzję zmiennoprzecinkowa, a także rozszerzony zakres zdefiniowany w specyfikacji ICC v4.3.

Efekt zarządzania kolorami kończy się niepowodzeniem podczas rysowania, jeśli aplikacja żąda trybu jakości, który nie jest obsługiwany przez sprzęt. Poziom funkcji można określić podczas wywoływania D3D11CreateDevice. Możesz sprawdzić obsługę buforu zmiennoprzecinkowego, wywołując ID2D1EffectContext::IsBufferPrecisionSupported z wartością D2D1_BUFFER_PRECISION_32BPC_FLOAT.

Przykładowy kod

Aby uzyskać przykład tego efektu, pobierz przykład Direct2D efekty korekty zdjęciai zobacz lekcję 4 próbki.

Wymagania

Wymaganie Wartość
Minimalny obsługiwany klient Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows]
Minimalny obsługiwany serwer Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows]
Nagłówek d2d1effects.h
Biblioteka d2d1.lib, dxguid.lib