3

Direct2D でレンダリングするときにビットマップの色を変更する方法を知っている人はいますか? Direct3D では、さまざまな頂点の色を指定するか、スプライト バッチを使用する場合は色を指定するだけです。Direct2D を使用してこれを行いたいと思います。助けてくれてありがとう。

4

2 に答える 2

1

CLSID_D2D1ColorMatrix 効果を使用してビットマップに色を付けてみましたが、機能しますが、パフォーマンスはかなりひどいものです (フレームごとに行う必要がある場合)。

色が大幅に変化する場合は出力をキャッシュすることもできますが、スプライトの色合いにアニメーションを付けて点滅/ダメージ効果を行うのが好きなので、キャッシュは役に立ちません。

私の次の行動は、レンダラーを D3D に切り替えて、色合いを含む SpriteBatch シェーダーを実装することです (または、DirectX ツール キットの実装に基づいています)。

http://blogs.msdn.com/b/shawnhar/archive/2012/06/18/directx-tool-kit-is-now-on-codeplex.aspx

于 2012-07-10T22:43:43.950 に答える
0

現在の API を使用して、描画された画像の上に半透明のジオメトリを描画するのが最も簡単な方法です。

プレビュー API を使用する場合:

XNA の SpriteBatch ほど便利ではありませんが、ID2D1DeviceContext::SetPrimitiveBlend() を使用して必要なブレンドの種類 (加算またはアルファ ブレンドに対するソース) を設定すると、画像の上または下に描画して、色合い効果をシミュレートできます。探しています。

または、DImage のID2D1Effects (D2D の新しいコンポーネント) を使用して、組み込みの効果またはカスタム効果を使用して画像を描画することもできます。

DImage エフェクトは、ノード ベースのシェーダー エディターと考えて、「エフェクト グラフ」から連鎖させることができます。

最後に、ID2D1GpuTransformを使用できます。ID2D1GpuTransform でピクセル シェーダーを設定できます。このトランスフォーマーは、エフェクト グラフに接続できます。

于 2011-12-24T11:47:52.833 に答える