Magpie/Runtime/DesktopDuplicationFrameSource.h
Xu Liu 3404e510eb refactor: FrameSource 初始化完成后再计算源窗口边框
因为 FrameSource 初始化过程中可能改变源窗口位置
2021-12-12 21:19:28 +08:00

33 lines
678 B
C++

#pragma once
#include "FrameSourceBase.h"
class DesktopDuplicationFrameSource : public FrameSourceBase {
public:
DesktopDuplicationFrameSource() {};
virtual ~DesktopDuplicationFrameSource() {}
bool Initialize() override;
ComPtr<ID3D11Texture2D> GetOutput() override {
return _output;
}
UpdateState Update() override;
bool HasRoundCornerInWin11() override {
return true;
}
private:
// 消除刚进入全屏时短暂的黑屏
bool _firstFrame = true;
ComPtr<IDXGIResource> _dxgiRes;
ComPtr<ID3D11Texture2D> _output;
ComPtr<IDXGIOutputDuplication> _outputDup;
std::vector<BYTE> _dupMetaData;
RECT _srcClientInMonitor{};
D3D11_BOX _frameInMonitor{};
};