1

私はWindowsアプリケーションとC++での作業に不慣れです。このコード「 http://msdn.microsoft.com/en-us/library/windows/desktop/hh404272(v=vs.85).aspx 」に従って、d3d11デバイスのDxgiサーフェスから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でソリューションをコンパイルまたは構築しているときにエラーが発生することはありません。ただし、デバッグ中にエラーが発生します。このコードをMicrosoftのデスクトップ複製サンプルコードに挿入しようとしています。プロジェクトのd2dbitmapソースを作成する必要があります

これで私を助けてください。

さらに詳しい情報が必要な場合はお知らせください。

4

1 に答える 1

1

optionsD2D1_DEBUG_LEVEL_INFORMATIONwhen に設定する_DEBUGと、出力ウィンドウにエラー メッセージが表示される場合があります。たとえば、出力は私にそれを教えてくれました

D2D DEBUG 警告 - Direct3D デバイスは D3D11_CREATE_DEVICE_BGRA_SUPPORT で作成されていないため、Direct2D と互換性がありません。

これは本当に役に立ちます。

于 2017-02-21T13:56:07.883 に答える