增加扩展屏的框架
This commit is contained in:
@@ -71,6 +71,48 @@ bool ScreenCapture::Initialize() {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ScreenCapture::InitializeWithOutputIndex(int index) {
|
||||
HRESULT hr = S_OK;
|
||||
D3D_FEATURE_LEVEL featureLevels[] = {
|
||||
D3D_FEATURE_LEVEL_11_1,
|
||||
D3D_FEATURE_LEVEL_11_0,
|
||||
};
|
||||
D3D_FEATURE_LEVEL featureLevel;
|
||||
hr = D3D11CreateDevice(
|
||||
nullptr,
|
||||
D3D_DRIVER_TYPE_HARDWARE,
|
||||
nullptr,
|
||||
D3D11_CREATE_DEVICE_BGRA_SUPPORT,
|
||||
featureLevels,
|
||||
ARRAYSIZE(featureLevels),
|
||||
D3D11_SDK_VERSION,
|
||||
&device_,
|
||||
&featureLevel,
|
||||
&context_
|
||||
);
|
||||
if (FAILED(hr)) {
|
||||
return false;
|
||||
}
|
||||
ComPtr<IDXGIDevice> dxgiDevice;
|
||||
hr = device_.As(&dxgiDevice);
|
||||
if (FAILED(hr)) return false;
|
||||
ComPtr<IDXGIAdapter> dxgiAdapter;
|
||||
hr = dxgiDevice->GetAdapter(&dxgiAdapter);
|
||||
if (FAILED(hr)) return false;
|
||||
ComPtr<IDXGIOutput> dxgiOutput;
|
||||
hr = dxgiAdapter->EnumOutputs(index, &dxgiOutput);
|
||||
if (FAILED(hr)) {
|
||||
return false;
|
||||
}
|
||||
ComPtr<IDXGIOutput1> dxgiOutput1;
|
||||
hr = dxgiOutput.As(&dxgiOutput1);
|
||||
if (FAILED(hr)) return false;
|
||||
hr = dxgiOutput1->DuplicateOutput(device_.Get(), &duplication_);
|
||||
if (FAILED(hr)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool ScreenCapture::CaptureFrame(ComPtr<ID3D11Texture2D>& texture) {
|
||||
if (frame_acquired_) {
|
||||
ReleaseFrame();
|
||||
|
||||
Reference in New Issue
Block a user