2012-11-02 5 views
2

가장 가까운 이웃 샘플링을 사용하여 WPF에서 3D 표면에 이미지를 렌더링하려고 필사적으로 노력하고 있습니다. 아래는 내가 현재 가지고있는 것의 예입니다. 모든 흐릿함이 있습니다. ImageBrush에는 64x64 텍스처가 지정됩니다.3D에서 가장 가까운 이웃 이미지 샘플링 WPF

Sample image.

나는 운없이 ImageBrushWindow에서 사방 RenderOptions.BitmapScalingMode="NearestNeighbor"으로 XAML을 장식 시도했습니다. 맞춤형 픽셀 쉐이더 작성을 시도했지만 만족스런 결과를 얻을 수 없었습니다. 셰이더 코드 내에서 텍스처 샘플러의 필터링 모드를 설정할 수없는 것으로 나타났습니다. 소스 텍스처를 직접 스케일링하는 등의 해결 방법을 고려해 보았습니다. 그러나 이것은 여전히 ​​다음 픽셀로 보간되기 시작하는 두 개의 가장자리에 아티팩트를 남깁니다.

결론 : WPF의 3D 모델에서 가장 가까운 이웃 이미지 샘플링의 효과를 얻을 수있는 방법이 있습니까?

답변

1

같은 문제가있는 경우 this thread의 대답은 해결 방법을 제공합니다.

이미지와 함께 VisualBrush를 사용할 수 있습니다. 그러면 WPF는 이미지에서 BitmapScalingMode를 존중합니다. 또한 성능을 향상시킬 수있는 CachingHint (RenderOptions에서도)를 설정할 수 있습니다 (성능은 측정하지 않음). 내가 성능을 측정하지 못했지만, 나는 비주얼이 (AN ImageBrush와 비교) 큰 물건 다치게 상상 말했듯이, 간단한 장면 작동

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)); 

. 개인적으로 Direct3D interop으로 전환하고 그 문제가 발생했을 때 SharpDX을 통해 장면을 렌더링합니다.

관련 문제