2013-02-12 35 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兼容。

這真的很有幫助。