それが可能であり、GDI+ を使用するよりもはるかに高速であることはわかっています。ただし、DirectX を使用して画像のサイズを変更し、ディスクに保存する良い例は見つかりませんでした。私はこれを GDI+ で何度も実装しましたが、難しくありません。ただし、GDI+ はハードウェア アクセラレーションを使用しないため、グラフィック カードを利用してパフォーマンスを向上させたいと考えていました。
2 に答える
画像をテクスチャとしてロードし、それをクワッドにテクスチャ マップして、そのクワッドを画面上に任意のサイズで描画できます。これでスケーリングが行われます。その後、画面からピクセルデータを取得し、ファイルに保存したり、さらに処理したりできます。
それは簡単です。SDK に付属する基本的なテクスチャリング DirectX の例は、これを行うように調整できます。
ただし、遅いです。レンダリング自体ではなく、画面からメモリ バッファへのピクセル データの転送です。
あるバッファから別のバッファへの双一次スケーリングを使用して画像のサイズを変更する小さなコードを書くだけで、はるかに簡単で高速になります。
本当に DirectX を使用する必要がありますか? GDI+ は、画像のサイズ変更に適しています。DirectX では、画像をテクスチャとして表示する可能性が高いため、実際に画像のサイズを変更する必要はありません。テクスチャは 3D オブジェクト (三角形/ポリゴン/メッシュ) にのみ適用できるため、3D オブジェクトとビュー ポートのサイズによって、表示される実際の画像サイズが決まります。3D オブジェクト内でテクスチャをスケーリングする必要がある場合は、テクスチャ座標またはマトリックスを再生するだけです。
テクスチャを操作するには、必要に応じて、アルファ ブレンディング、マスキング、およびあらゆる種類のテクスチャ操作テクニックを使用できます。GDI+ のように個々のピクセルを操作するには、今でも GDI+ が適していると思います。DirectX は、画像操作を行うために修正されたことはありません。