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