2024年2月21日发(作者:)
#pragma comment(lib, "")#pragma comment(lib, "")
#define RESET_OBJECT(obj) { if(obj) obj->Release(); obj = NULL; }static BOOL g_bAttach = FALSE;
VideoDXGICaptor::VideoDXGICaptor(){ m_bInit = FALSE;
m_hDevice = NULL; m_hContext = NULL; m_hDeskDupl = NULL;
ZeroMemory(&m_dxgiOutDesc, sizeof(m_dxgiOutDesc));}VideoDXGICaptor::~VideoDXGICaptor(){ Deinit();}BOOL VideoDXGICaptor::Init(){ HRESULT hr = S_OK;
if (m_bInit) { return FALSE; }
// Driver types supported D3D_DRIVER_TYPE DriverTypes[] = { D3D_DRIVER_TYPE_HARDWARE, D3D_DRIVER_TYPE_WARP, D3D_DRIVER_TYPE_REFERENCE, }; UINT NumDriverTypes = ARRAYSIZE(DriverTypes);
// Feature levels supported D3D_FEATURE_LEVEL FeatureLevels[] = { D3D_FEATURE_LEVEL_11_0, D3D_FEATURE_LEVEL_10_1, D3D_FEATURE_LEVEL_10_0, D3D_FEATURE_LEVEL_9_1 }; UINT NumFeatureLevels = ARRAYSIZE(FeatureLevels);
D3D_FEATURE_LEVEL FeatureLevel;
// // Create D3D device // for (UINT DriverTypeIndex = 0; DriverTypeIndex < NumDriverTypes; ++DriverTypeIndex) { hr = D3D11CreateDevice(NULL, DriverTypes[DriverTypeIndex], NULL, 0, FeatureLevels, NumFeatureLevels, D3D11_SDK_VERSION, &m_hDevice, &FeatureLevel, &m_hContext); if (SUCCEEDED(hr)) { break; } } if (FAILED(hr)) { return FALSE; }
// // Get DXGI device // IDXGIDevice *hDxgiDevice = NULL; hr = m_hDevice->QueryInterface(__uuidof(IDXGIDevice), reinterpret_cast
// // Get DXGI adapter // IDXGIAdapter *hDxgiAdapter = NULL; hr = hDxgiDevice->GetParent(__uuidof(IDXGIAdapter), reinterpret_cast
// // Get output //
}
// // copy bits to user space // DXGI_MAPPED_RECT mappedRect; hr = hStagingSurf->Map(&mappedRect, DXGI_MAP_READ); if (SUCCEEDED(hr)) { // nImgSize = GetWidth() * GetHeight() * 3; // PrepareBGR24From32(, (BYTE*)pImgData, m_pCoordinates); // ; // am_pCoordinates; memcpy((BYTE*)pImgData, , m_ * m_ * 4); hStagingSurf->Unmap(); }
RESET_OBJECT(hStagingSurf); return SUCCEEDED(hr);}


发布评论