호환 가능한 A8 렌더링 대상 개요
이 항목에서는 호환되는 A8 렌더링 대상의 기본 사항을 설명하고 이를 사용하는 방법의 예시를 제공합니다.
호환 가능한 A8 렌더링 대상은 A8 픽셀 포맷(DXGI_FORMAT_A8_UNORM)을 사용하는 호환 가능한 렌더링 대상(ID2D1BitmapRenderTarget)입니다. 호환되는 A8 렌더링 대상을 사용하여 애플리케이션의 성능을 개선하고 텍스트 애니메이션 중에 더 원활한 전환을 제공할 수 있습니다. 호환되는 A8 렌더링 대상은 다음을 개선할 때 특히 유용합니다.
변환, 회전, 배율 또는 색 변경과 같은 간단한 애니메이션만 포함된 텍스트 또는 앤티앨리어싱된 기하 도형을 렌더링하는 애플리케이션의 프레임 속도.
애니메이션 중에 텍스트를 늘리거나 줄이는 애플리케이션의 시각적 연속성.
호환 가능한 A8 렌더링 대상을 생성하려면, ID2D1RenderTarget::CreateCompatibleRenderTarget 메서드와 DXGI_FORMAT_A8_UNORM 픽셀 포맷을 함께 사용하고 반환되는 호환 가능한 렌더링 대상을 지정합니다. 픽셀 형식에 대한 자세한 내용은 지원되는 픽셀 형식 및 알파 모드를 참조하세요.
예를 들어, 다음 스크린샷에 표시된 텍스트에 효율적으로 애니메이션 효과를 적용하려면 호환되는 A8 렌더링 대상을 사용하여 텍스트를 불투명 마스크로 캐시합니다. 그런 다음 불투명 마스크에 변환을 적용하여 빠른 렌더링 결과를 얻을 수 있습니다.
다음 코드에서는 이 작업을 수행하는 방법을 보여 줍니다. 호환 가능한 A8 렌더링 대상을 생성하고 여기에서 비트맵을 검색한 다음 FillOpacityMask를 사용하여 비트맵을 렌더링합니다.
ID2D1BitmapRenderTarget *m_pOpacityRT;
// Create the compatible render target using desiredPixelSize to avoid
// blurriness issues caused by a fractional-pixel desiredSize.
D2D1_PIXEL_FORMAT alphaOnlyFormat = D2D1::PixelFormat(
DXGI_FORMAT_A8_UNORM,
D2D1_ALPHA_MODE_PREMULTIPLIED);
hr = m_pRT->CreateCompatibleRenderTarget(
NULL,
&maskPixelSize,
&alphaOnlyFormat,
D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE,
&m_pOpacityRT
);
D2D1_RECT_F destinationRect = D2D1::RectF(
roundedOffset.x,
roundedOffset.y,
roundedOffset.x + opacityRTSize.width,
roundedOffset.y + opacityRTSize.height
);
ID2D1Bitmap *pBitmap = NULL;
m_pOpacityRT->GetBitmap(&pBitmap);
pBitmap->GetDpi(&dpiX, &dpiY);
// The antialias mode must be set to D2D1_ANTIALIAS_MODE_ALIASED
// for this method to succeed. We've set this mode already though
// so no need to do it again.
m_pRT->FillOpacityMask(
pBitmap,
m_pBlackBrush,
D2D1_OPACITY_MASK_CONTENT_TEXT_NATURAL,
&destinationRect
);
pBitmap->Release();