DirectXを使用して画像のサイズを変更するためのサンプルコード

StackOverflow https://stackoverflow.com/questions/173258

  •  05-07-2019
  •  | 
  •  

質問

それが可能であり、GDI +を使用するよりもはるかに高速であることがわかっています。ただし、DirectXを使用して画像のサイズを変更し、ディスクに保存する良い例は見つかりませんでした。私はこれをGDI +で何度も実装していますが、それは難しくありません。ただし、GDI +はハードウェアアクセラレーションを使用しないため、グラフィックカードをタップしてパフォーマンスを向上させたいと考えていました。

役に立ちましたか?

解決

本当にDirectXを使用する必要がありますか? GDI +は、画像のサイズを変更するのに適しています。 DirectXでは、ほとんどの場合、画像をテクスチャとして表示するため、画像のサイズを変更する必要はありません。テクスチャは3Dオブジェクト(三角形/ポリゴン/メッシュ)にのみ適用できるため、3Dオブジェクトとビューポートのサイズによって、表示される実際の画像サイズが決まります。 3Dオブジェクト内でテクスチャをスケーリングする必要がある場合は、テクスチャの座標またはマトリックスを再生するだけです。

テクスチャを操作するには、アルファブレンディング、マスキング、およびあらゆる種類のテクスチャ操作テクニックを使用できます(必要な場合)。 GDI +のように個々のピクセルを操作するには、GDI +がまだ方法であると思います。 DirectXが画像操作を行うことは決してありませんでした。

他のヒント

画像をテクスチャとしてロードし、クワッドにテクスチャマッピングして、画面上に任意のサイズでそのクワッドを描画できます。これでスケーリングが行われます。その後、画面からピクセルデータを取得したり、ファイルに保存したり、さらに処理したりできます。

簡単です。 SDKに付属する基本的なテクスチャリングDirectXの例は、これを行うために調整できます。

ただし、遅い。レンダリング自体ではなく、画面からメモリバッファへのピクセルデータの転送です。

1つのバッファから別のバッファへの双線形スケーリングを使用して画像のサイズを変更する小さなコードを記述する方がはるかに簡単で高速です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top