D3D11 程序调用经常碰到莫名其妙的错误。错误码一般就是E_INVALIDARG。具体原因大概是为了对外尽量减少暴露 以及 利用返回错误来避免一些低效的程序操作。
但是调试时发现其实是有错误信息显示的,如下:
经过一番查找,这个日志的输出与D3D device 创建时有关。
UINT createDeviceFlags = 0;
#ifdef _DEBUG
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; //设置该参数,能显示错误日志
#endif
hr = D3D11CreateDevice( nullptr, g_driverType, nullptr, createDeviceFlags, featureLevels, numFeatureLevels, D3D11_SDK_VERSION, &g_pd3dDevice, &g_featureLevel, &g_pImmediateContext );