ディスプレイスメント マップ効果
ディスプレイスメント マップ効果を使用して、2 番目の入力画像の強度値によって入力イメージのピクセルを変位させます。
この効果の CLSID はCLSID_D2D1DisplacementMap。
画像の例
以前は |
---|
効果の前に画像を ![]() |
後 |
変換後にイメージを ![]() |
ComPtr<ID2D1Effect> displacementMapEffect;
m_d2dContext->CreateEffect(CLSID_D2D1DisplacementMap, &displacementMapEffect);
displacementMapEffect->SetInput(0, bitmap);
displacementMapEffect->SetValue(D2D1_DISPLACEMENTMAP_PROP_SCALE, 100.0f);
// The second input of the displacement effect determines how the input image is transformed.
// For this example, we will use a turbulence effect as the second input to randomly distort the image.
ComPtr<ID2D1Effect> turbulenceEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Turbulence, &turbulenceEffect);
displacementMapEffect->SetInputEffect(1, turbulenceEffect.Get());
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(displacementMapEffect.Get());
m_d2dContext->EndDraw();
出力内のピクセルの位置は、次の式を使用して決定されます。
C' (x,y)=C(x+ scale*(XChannelSelector(ディスプレイスメント ビットマップ (x,y)))-0.5),y+ scale*(YChannelSelector(ディスプレイスメント ビットマップ (x,y)-0.5))
どこ:
-
C (x, y) (x, y) の出力ピクセルです。
C (x, y) は、(x, y) の入力ピクセルです。
ディスプレイスメント ビットマップ (x, y) は、指定した座標でのディスプレイスメント ピクセルの強度です。
XChannelSelector 、入力画像を X 方向に変位させるディスプレイスメント ビットマップから選択した RGBA チャネルの強度を します。
YChannelSelector 、入力画像を Y 方向に変位させるディスプレイスメント ビットマップから、選択した RGBA チャネルの強度を します。
この効果は、スケール プロパティとディスプレイスメント イメージの強度に従って、入力イメージを再サンプリングします。 入力画像のピクセル間からサンプリングする場合は、バイリニア補間を使用します。
この効果は、直線的で事前に乗算されたアルファ画像に対して機能します。 出力アルファ形式は入力形式と同じです。
Effect プロパティ
表示名とインデックス列挙 | 型と既定値 | 形容 |
---|---|---|
規模 D2D1_DISPLACEMENTMAP_PROP_SCALE |
浮く 0.0f |
ディスプレイスメント イメージから選択したチャネルの強度を乗算します。 このプロパティを高く設定すると、ピクセルのずれが大きくなります。 |
XChannelSelect D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
この効果は、このカラー チャネルから強度を抽出し、それを使用して X 方向の画像を空間的に変位させます。 詳細については、「カラー チャネルの」を参照してください。 |
YChannelSelect D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
この効果は、このカラー チャネルから強度を抽出し、それを使用して Y 方向の画像を空間的に変位させます。 詳細については、「カラー チャネルの」を参照してください。 |
カラー チャネル
列挙 | 形容 |
---|---|
D2D1_CHANNEL_SELECTOR_R | 効果は赤いチャネルから強度出力を抽出します。 |
D2D1_CHANNEL_SELECTOR_G | この効果は、緑色のチャネルから強度出力を抽出します。 |
D2D1_CHANNEL_SELECTOR_B | この効果は、青色のチャンネルから強度出力を抽出します。 |
D2D1_CHANNEL_SELECTOR_A | この効果は、アルファ チャネルからの強度出力を抽出します。 |
出力ビットマップ
次の式を使用して、出力ビットマップの最大サイズを決定できます。
出力ビットマップ? Pixels=(入力ビットマップ サイズ?(DIP)+Scale)*(ユーザー DPI/96)
Output Bitmapy Pixels=(Input Bitmap Sizey(DIP) + Scale)*(User DPI/96)
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |[Windows ストア アプリ] |
サポートされている最小サーバー | Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |[Windows ストア アプリ] |
ヘッダ | d2d1effects.h |
図書館 | d2d1.lib、dxguid.lib |