"无法初始化Direct3d"

时间:2014-05-02 01:04:14

标签: directx directx-11 directx-9

我正在尝试从这个Directx-11教程网站运行一个exe:tutorial5(在页面末尾的exe),但我收到错误"无法初始化Direct3d&# 34; 即可。

下载解决方案并在Visual Studio 2013或Visual Studio 2010上运行时,我收到同样的错误。

  • 我安装了最新的DirectX(使用" DirectX安装) 最终用户运行时Web安装程序": link
  • 我还从这里安装了DirectX 9 SDK:DirectX 9 SDK June 2010
  • dxdiag显示Direct3d"已启用"。
  • 我更新了核心i5"上的英特尔高清显卡库。到最新的司机。

我错过了什么?如何在我的机器上运行Directx-11应用程序?

谢谢!

1 个答案:

答案 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的输出窗口中查看输出。