1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #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;
- #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;
- }
|