我正在尝试从这个Directx-11教程网站运行一个exe:tutorial5(在页面末尾的exe),但我收到错误"无法初始化Direct3d&# 34; 即可。
下载解决方案并在Visual Studio 2013或Visual Studio 2010上运行时,我收到同样的错误。
我错过了什么?如何在我的机器上运行Directx-11应用程序?
谢谢!
答案 0 :(得分:0)
此处发生错误,您应该检查Initialize函数的结果以查看错误是什么。
// Initialize the Direct3D object.
result = m_D3D->Initialize(screenWidth, screenHeight, VSYNC_ENABLED, hwnd, FULL_SCREEN, SCREEN_DEPTH, SCREEN_NEAR);
if(!result)
{
MessageBox(hwnd, L"Could not initialize Direct3D.", L"Error", MB_OK);
return false;
}
另一个有用的提示是在创建设备和交换链时打开DEBUG模式。在创建设备时尝试以下代码启用调试模式(在d3dclass.cpp中,在调用D3D11CreateDeviceAndSwapChain之前添加以下代码,并且不要忘记将此函数的第三个参数设置为标志)
UINT flags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;
#if defined( DEBUG ) || defined( _DEBUG )
flags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
// Create the swap chain, Direct3D device, and Direct3D device context.
result = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, flags, 0, &featureLevel, 1,
D3D11_SDK_VERSION, &swapChainDesc, &m_swapChain, &m_device, NULL, &m_deviceContext);
if(FAILED(result))
{
return false;
}
在调试模式下构建并运行程序,并在VS的输出窗口中查看输出。