Visual c++ 无法在c+;中创建d2d设备+; 我对使用Windows应用程序和C++是新手。我正在尝试从d3d11设备的Dxgi表面创建一个D2D设备,代码如下“”

Visual c++ 无法在c+;中创建d2d设备+; 我对使用Windows应用程序和C++是新手。我正在尝试从d3d11设备的Dxgi表面创建一个D2D设备,代码如下“”,visual-c++,Visual C++,但是HRESULT gr(创建d2d设备)给了我一个错误“E_INVALIDARG”,尽管我遵循了与给定相同的步骤 下面是代码片段。 //m_设备已初始化 //获取DXGI设备 IDXGIDevice* DxgiDevice = nullptr; HRESULT hr = m_Device->QueryInterface(__uuidof(IDXGIDevice), reinterpret_cast<void**>(&DxgiDevice)); // create i

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

下面是代码片段。 //m_设备已初始化

//获取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 );
IDXGIDevice*DxgiDevice=nullptr;
HRESULT hr=m_设备->查询接口(uu-uuidof(IDXGIDevice),重新解释转换(&DxgiDevice));
//创建ID2D21工厂
ID2D1Factory1*m_d2dFactory=nullptr;
D2D1_工厂_选项;
options.debugLevel=D2D1\u DEBUG\u LEVEL\u NONE;
D2D1工厂类型factoryType=D2D1工厂类型单螺纹;
hr=D2D1CreateFactory(factoryType、ID2D1Factory1和options,重新解释铸造(&m_d2dFactory));
HRESULT gr=m_d2dFactory->CreateDevice(dxgDevice和m_d2dDevice);
在visual studio 2012中编译或构建解决方案时,此代码不会给出任何错误。 但调试时给我错误。 我正在尝试在microsoft的桌面复制示例代码中插入此代码。我需要为我的项目创建一个d2dbitmap源

请帮我做这个


如果需要更多详细信息,请告诉我。

我建议您在定义
\u DEBUG
时,将
选项设置为
D2D1\u DEBUG\u LEVEL\u INFORMATION
,然后您可能会在输出窗口中看到一些错误消息。例如,输出告诉我

D2D调试警告-Direct3D设备不是使用D3D11_CREATE_device_BGRA_支持创建的,因此与Direct2D不兼容


这非常有用。

我建议您在定义
\u DEBUG
时,将
选项设置为
D2D1\u DEBUG\u LEVEL\u INFORMATION
,然后您可能会在输出窗口中看到一些错误消息。例如,输出告诉我

D2D调试警告-Direct3D设备不是使用D3D11_CREATE_device_BGRA_支持创建的,因此与Direct2D不兼容


这真的很有用。

这是什么
m\u d2device
?这是我想要创建的d2d设备。这是什么
m\u d2device
?这是我想要创建的d2d设备。