1

DirectX ピクセル シェーダーを使用して写真の画像効果を作成することはできますか? 写真データベース マネージャーのようなものを含む C++ アプリケーションがあります。画像処理に GDI+ を利用しており、ユーザーにファンシーな画像効果を提供したいと考えています。これは、DirectX ピクセル シェーダーを介して行いたいと考えています。Shazzam ツールがサンプル ライブラリを使用してすぐに使用できるように、同様の効果を実現したいと考えています。残念ながら、私は純粋な GDI+ を使用しており、WPF は使用していません。

GDI+ ビットマップで画像効果を作成するには、次の手順を考えました。

1) GDI+ 経由で画像を読み込む

2) DirectX を初期化し、シェーダーをロード/コンパイルし、GDI+ イメージを DirectX でテクスチャーとして使用するように変換します。

3) DirectX で 4 つの頂点を描画し、写真をテクスチャとして使用する

4) ピクセルシェーダーを適用する

5) ピクセルシェーディングされた写真でサーフェスを保存します

1-4 はすでに解決済みですが、ステップ 5 を達成するにはどうすればよいですか?

現在、変更された写真を収集するために次のスニペットを使用しています。

d3dDevice->GetRenderTarget(0, &surface);

D3DXSaveSurfaceToFile("Test.png", D3DXIFF_PNG, surface, NULL, NULL);

surface->Release();
surface = NULL;

このコードは、テクスチャ (=写真) だけでなくシーン全体をキャプチャするため、私のニーズには合いません。ピクセル シェーディングされた写真テクスチャを元のサイズに戻すにはどうすればよいですか? Shazzam Tool が提供するのと同じ結果を達成したいのですが、WPF は使用しません...

前もって感謝します!

乾杯!

4

2 に答える 2

1

適切な寸法でオフスクリーン レンダー ターゲット (テクスチャへのレンダリング) を作成し、それをサーフェスとして保存します (既に行っているように)。目に見えるスクリーン スペースへのレンダリング (今まさにそうしているように聞こえます) は、間違いなく最も避けたいことです。結果も表示したい場合は、レンダリングされたテクスチャをレンダリングします。

于 2012-08-16T13:26:23.997 に答える