互換性のある 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();