mirror of https://github.com/opencv/opencv.git
parent
b43d6b6858
commit
cc69d4631a
4 changed files with 96 additions and 0 deletions
@ -0,0 +1,14 @@ |
||||
if(WIN32) |
||||
try_compile(__VALID_DIRECTX |
||||
"${OpenCV_BINARY_DIR}" |
||||
"${OpenCV_SOURCE_DIR}/cmake/checks/directx.cpp" |
||||
OUTPUT_VARIABLE TRY_OUT |
||||
) |
||||
if(NOT __VALID_DIRECTX) |
||||
return() |
||||
endif() |
||||
set(HAVE_DIRECTX ON) |
||||
set(HAVE_D3D11 ON) |
||||
set(HAVE_D3D10 ON) |
||||
set(HAVE_D3D9 ON) |
||||
endif() |
@ -0,0 +1,70 @@ |
||||
#include <windows.h> |
||||
|
||||
#include <d3d11.h> |
||||
#pragma comment (lib, "d3d11.lib") |
||||
|
||||
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; |
||||
sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; |
||||
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; |
||||
} |
Loading…
Reference in new issue