0
101 May 06, 2012 at 10:32

My ID3D10Device creation works fine in debug mode but It throws an error in release mode:

DXGI_SWAP_CHAIN_DESC scDesc = {0};
scDesc.BufferDesc.Width = desc.width;
scDesc.BufferDesc.Height = desc.height;
/*scDesc.BufferDesc.RefreshRate.Numerator = 60;
scDesc.BufferDesc.RefreshRate.Denominator = 1;*/
scDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
scDesc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
scDesc.BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;

scDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
scDesc.BufferCount = 1;
scDesc.OutputWindow = desc.hWnd;
scDesc.Flags = 0;

scDesc.Windowed = true;
scDesc.SampleDesc.Count = desc.sampleCount;
scDesc.SampleDesc.Quality = desc.sampleQuality;

// Create the device.
UINT createDeviceFlags = 0;
#if defined(DEBUG) || defined(_DEBUG)
createDeviceFlags |= D3D10_CREATE_DEVICE_DEBUG;
#endif

HRESULT hr;
hr = D3D10CreateDeviceAndSwapChain(
nullptr,
D3D10_DRIVER_TYPE_HARDWARE,
NULL,
createDeviceFlags,
D3D10_SDK_VERSION,
&scDesc,
&g_Renderer.m_DxCore.pSwapChain,
&g_Renderer.m_DxCore.pDevice);

std::tcout<<hr;

//////RUNTIME ERROR HANDLING
if(FAILED(hr)) {
throw std::runtime_error("ERROR: Failed to create ID3D10Device and IDXGISwapChain");
}


I’ve already checked each of these options, but none of it triggers.

http://msdn.microsof…8(v=vs.85).aspx

The value of the hr seems to be -2005270527, after checking it with

std::cout<<hr


My debugger also can’t show the value of hr when hovering over it, for some reason.

What could the problem possibly be? I tried just about anything :(

#### 2 Replies

0
101 May 08, 2012 at 16:39

That error is described here: http://msdn.microsoft.com/en-us/library/windows/desktop/bb509553(v=vs.85).aspx

“DXGI_ERROR_INVALID_CALL: The application provided invalid parameter data; this must be debugged and fixed before the application is released.”

0
101 May 13, 2012 at 12:46

I found my problem. I had an invalid window handle in release mode, which was caused by ASSERT(RegisterWindowClass()), which in release mode would of course never get executed. It’s a shame though that not all return codes are given in the msdn documentation of the function.