안녕하세요 저는 SlimDX 및 DirectX 11 그래픽을 D3DImage 및 공유 텍스처를 사용하여 WPF 응용 프로그램에 통합했습니다. 그러나 고해상도 (2560x1440)에서 간단한 장면 (예 : SlimDX 샘플의 GameOfLife)을 렌더링 할 때 성능이 약간 저하됩니다.WPF 및 SlimDX (DirectX 11) interop
내 렌더링 메서드의 성능 프로파일 링을 시도해 보았습니다. 그리고 대부분의 시간이 backbuffer를 무효로 할 때 D3DImage를 잠그는 데 소요 된 것처럼 보입니다.
_device.ImmediateContext.Flush(); // <- 20,6% of the time when rendering the frame
누구든지이 문제를 알고 어떻게 최적화하는 방법 :
_d3dImage.Lock(); // <- this call takes 78,5 % of the time when rendering the frame
_d3dImage.AddDirtyRect(new Int32Rect(0, 0, _d3dImage.PixelWidth, _d3dImage.PixelHeight));
_d3dImage.Unlock();
많은 시간 그린 후 장치를 flusing 소요되는? WPF와 SlimDX를 통합 할 때 하강 성능을 기대할 수 있습니까?
잠금은 UI 스레드가 백 버퍼 읽기를 중지 할 때까지 스레드를 차단하고 플러시는 꽤 비싸므로 이러한 결과가 비정상적이지 않습니다. 실제 실적 수치는 무엇입니까? GPU가 쉐이더를 지원합니까? 그렇지 않다면 소프트웨어에서 (즉, 냄새의 속도로) 실행될 것입니다. –
문제는 GameOfLife 샘플에 사용 된 계산 쉐이더와 관련이있는 것처럼 보입니다. 비활성화하면 프레임 속도가 최대 60fps로 돌아갑니다 ... – Pking