Revert "refactor: 只在程序启动时创建一次 D3D Device"

This reverts commit 8cd2f5afd8.
This commit is contained in:
Xu Liu 2021-11-20 10:34:18 +08:00
commit 0b9bf4c993
15 changed files with 258 additions and 313 deletions

View file

@ -25,6 +25,7 @@ bool GraphicsCaptureFrameSource::Initialize() {
return false;
}
_d3dDC = App::GetInstance().GetRenderer().GetD3DDC();
HWND hwndSrc = App::GetInstance().GetHwndSrc();
// 包含边框的窗口尺寸
@ -61,7 +62,7 @@ bool GraphicsCaptureFrameSource::Initialize() {
}
hr = CreateDirect3D11DeviceFromDXGIDevice(
Renderer::GetInstance().GetDXGIDevice().Get(),
App::GetInstance().GetRenderer().GetDXGIDevice().Get(),
reinterpret_cast<::IInspectable**>(winrt::put_abi(_wrappedD3DDevice))
);
if (FAILED(hr)) {
@ -143,7 +144,7 @@ bool GraphicsCaptureFrameSource::Initialize() {
desc.SampleDesc.Count = 1;
desc.SampleDesc.Quality = 0;
desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET;
hr = Renderer::GetInstance().GetD3DDevice()->CreateTexture2D(&desc, nullptr, &_output);
hr = App::GetInstance().GetRenderer().GetD3DDevice()->CreateTexture2D(&desc, nullptr, &_output);
if (FAILED(hr)) {
SPDLOG_LOGGER_ERROR(logger, MakeComErrorMsg("创建 Texture2D 失败", hr));
return false;
@ -179,7 +180,7 @@ bool GraphicsCaptureFrameSource::Update() {
return false;
}
Renderer::GetInstance().GetD3DDC()->CopySubresourceRegion(_output.Get(), 0, 0, 0, 0, withFrame.Get(), 0, &_frameInWnd);
_d3dDC->CopySubresourceRegion(_output.Get(), 0, 0, 0, 0, withFrame.Get(), 0, &_frameInWnd);
return true;
}