2013-02-12 88 views
1

我是使用Windows应用程序和C++的新手。我正在尝试从d3d11设备的Dxgi表面创建一个D2D设备,其代码为“http://msdn.microsoft.com/en-us/library/windows/desktop/hh404272(v=vs.85).aspx”。未能在C++中创建d2d设备

但HRESULT gr(创建d2d设备)给我一个错误“E_INVALIDARG”,虽然我遵循了给定的相同步骤。

这是代码片段。 // m_device已初始化

//获取DXGI设备

IDXGIDevice* DxgiDevice = nullptr; 
HRESULT hr = m_Device->QueryInterface(__uuidof(IDXGIDevice), reinterpret_cast<void**>(&DxgiDevice)); 
// create id2d21factory 
ID2D1Factory1* m_d2dFactory=nullptr; 
D2D1_FACTORY_OPTIONS options; 
    options.debugLevel= D2D1_DEBUG_LEVEL_NONE; 
D2D1_FACTORY_TYPE factoryType = D2D1_FACTORY_TYPE_SINGLE_THREADED; 
hr = D2D1CreateFactory(factoryType, __uuidof(ID2D1Factory1),&options, reinterpret_cast<void **>      (&m_d2dFactory)); 
HRESULT gr= m_d2dFactory->CreateDevice(DxgiDevice, &m_d2dDevice); 

在编译时或在Visual Studio 2012年 建设的解决方案,但给我的错误,而调试这个代码不给任何错误。 我正试图在微软的桌面重复示例代码中插入此代码。我需要为我的项目创建一个d2dmapmap源代码

请帮助我解决这个问题。

请让我知道是否需要更多细节。

+0

这是什么'm_d2dDevice'? – 2013-02-12 15:17:38

+0

这是我想要创建的d2d设备。 – user2064064 2013-02-13 04:48:06

回答

1

我建议您设置optionsD2D1_DEBUG_LEVEL_INFORMATION,当定义_DEBUG时,您可能会在输出窗口中看到一些错误消息。例如,输出告诉我,

D2D DEBUG警告 - Direct3D设备不是用D3D11_CREATE_DEVICE_BGRA_SUPPORT创建的,因此是不使用Direct2D兼容。

这真的很有帮助。