2

最近傍サンプリングを使用して、WPF の 3D サーフェスに画像をレンダリングしようとしています。以下は、私が現在持っているものの例です。ImageBrush には 64x64 のテクスチャが与えられます。

サンプル画像。

私は XAML を幸運から幸運のないものまでRenderOptions.BitmapScalingMode="NearestNeighbor"どこでも装飾しようとしました。カスタム ピクセル シェーダーを作成しようとしましたが、満足のいく結果が得られませんでした。シェーダー コード内からテクスチャ サンプラーのフィルタリング モードを設定できないようです。ソース テクスチャを自分でスケールアップするなどの回避策を検討しましたが、それでも、次のピクセルへの補間を開始する 2 つのエッジにアーティファクトが残ります。WindowImageBrush

結論: WPF の 3D モデルで最近傍画像サンプリングの効果を達成する方法はありますか?

4

1 に答える 1

1

同じ問題が発生しました。このスレッドの回答は回避策を提供します。

イメージで VisualBrush を使用すると、WPF はイメージの BitmapScalingMode を尊重します。パフォーマンスを向上させる可能性のある CachingHint (RenderOptions でも) を設定することもできます (ただし、測定はしていません)。

var image = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/image.png")) };
RenderOptions.SetCachingHint(image, CachingHint.Cache);
RenderOptions.SetBitmapScalingMode(image, BitmapScalingMode.NearestNeighbor);
var material = new DiffuseMaterial(new VisualBrush(image));

パフォーマンスを測定しなかったと述べたように、これは単純なシーンで機能しますが、VisualBrush は (ImageBrush と比較して) 大きなものには影響を与えると思います。個人的には、Direct3D 相互運用に切り替えて、その問題が発生したときにSharpDX経由でシーンをレンダリングします。

于 2014-01-11T23:04:12.610 に答える