mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.9 KiB
73 lines
1.9 KiB
#include <windows.h> |
|
|
|
#include <d3d11.h> |
|
|
|
HINSTANCE g_hInst = NULL; |
|
D3D_DRIVER_TYPE g_driverType = D3D_DRIVER_TYPE_NULL; |
|
D3D_FEATURE_LEVEL g_featureLevel = D3D_FEATURE_LEVEL_11_0; |
|
ID3D11Device* g_pd3dDevice = NULL; |
|
ID3D11DeviceContext* g_pImmediateContext = NULL; |
|
IDXGISwapChain* g_pSwapChain = NULL; |
|
|
|
static HRESULT InitDevice() |
|
{ |
|
HRESULT hr = S_OK; |
|
|
|
UINT width = 640; |
|
UINT height = 480; |
|
|
|
UINT createDeviceFlags = 0; |
|
|
|
D3D_DRIVER_TYPE driverTypes[] = |
|
{ |
|
D3D_DRIVER_TYPE_HARDWARE, |
|
D3D_DRIVER_TYPE_WARP, |
|
D3D_DRIVER_TYPE_REFERENCE, |
|
}; |
|
UINT numDriverTypes = ARRAYSIZE(driverTypes); |
|
|
|
D3D_FEATURE_LEVEL featureLevels[] = |
|
{ |
|
D3D_FEATURE_LEVEL_11_0, |
|
D3D_FEATURE_LEVEL_10_1, |
|
D3D_FEATURE_LEVEL_10_0, |
|
}; |
|
UINT numFeatureLevels = ARRAYSIZE(featureLevels); |
|
|
|
DXGI_SWAP_CHAIN_DESC sd; |
|
ZeroMemory( &sd, sizeof( sd ) ); |
|
sd.BufferCount = 1; |
|
sd.BufferDesc.Width = width; |
|
sd.BufferDesc.Height = height; |
|
#ifdef CHECK_NV12 |
|
sd.BufferDesc.Format = DXGI_FORMAT_NV12; |
|
#else |
|
sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; |
|
#endif |
|
sd.BufferDesc.RefreshRate.Numerator = 60; |
|
sd.BufferDesc.RefreshRate.Denominator = 1; |
|
sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; |
|
sd.OutputWindow = NULL; //g_hWnd; |
|
sd.SampleDesc.Count = 1; |
|
sd.SampleDesc.Quality = 0; |
|
sd.Windowed = TRUE; |
|
|
|
for (UINT driverTypeIndex = 0; driverTypeIndex < numDriverTypes; driverTypeIndex++) |
|
{ |
|
g_driverType = driverTypes[driverTypeIndex]; |
|
hr = D3D11CreateDeviceAndSwapChain(NULL, g_driverType, NULL, createDeviceFlags, featureLevels, numFeatureLevels, |
|
D3D11_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice, &g_featureLevel, &g_pImmediateContext); |
|
if (SUCCEEDED(hr)) |
|
break; |
|
} |
|
if (FAILED(hr)) |
|
return hr; |
|
|
|
return S_OK; |
|
} |
|
|
|
int main(int /*argc*/, char** /*argv*/) |
|
{ |
|
InitDevice(); |
|
return 0; |
|
}
|
|
|