2 개의 다른 장치에서 별도의 스레드로 사용되는 공유 DX11 텍스처가 있습니다.DX11 공유 텍스처 업데이트
Thread1 (장치 (1)에서 동작은) 프레임마다 호출되고 공유 텍스처
Thread2를 (1 디바이스상에서 동작) 업데이트 : 다른 텍스처 복사하여 공유 텍스처를 소비한다. 빈도는 스레드 1보다 훨씬 적습니다.
MSDN에 따르면 "한 장치에서 공유 텍스처가 업데이트되는 경우 ID3D11DeviceContext :: Flush가 해당 장치에서 호출되어야합니다."
그러나 모든 프레임에서 thread1을 플러시 (flush)하는 것은 매우 비싸고 성능이 크게 떨어집니다. 장치 컨텍스트가 스레드로부터 안전하지 않기 때문에 스레드 1에서 장치 1을 플러시 할 수 없습니다.
스레드 2가 그것을 소비해야 할 때 효율적으로 공유 텍스처 업데이트를 할 수 있습니까?
도움 주셔서 감사합니다. MSDN은 공유 텍스처를 다룰 때 그다지 도움이되지 않습니다. 는 두 개의 스레드 (또는 간) 당신이 IDXGIKeyedMutex를 사용할 수 사이의 공유 리소스에 대한 액세스를 동기화하기 위해 텍스트
안타깝게도 keyed 뮤텍스가 작동하지 않습니다. 우선 스레드를 먼저 실행해야하는 정의 된 순서가 없기 때문입니다. 두 스레드 모두 임의의 간격으로 호출 할 수 있으므로이 시나리오에서는 키순 mutex가 적합하지 않습니다. – Sid