フォト

Google AdSense


  • AdSense
無料ブログはココログ

« Direct3D12のUWPサンプルの話題 | トップページ | WWDCだけど »

2015.06.03

Direct3D12でWARPデバイスを作成するメモ

以前、Direct3D12でWARPデバイスを作成する話を下記のエントリのコメントでやってて、当時はドキュメントがなくてできない的な話で終わってるんですが、やりかたありましたね。

http://masafumi.cocolog-nifty.com/masafumis_diary/2015/03/direct3d12-3b52.html

ちょうど先日公開されたUWPサンプルにありました。

Direct3D 12 UWP Sample
https://code.msdn.microsoft.com/windowsapps/Direct3D-12-UAP-Sample-ecb1779f

このサンプルのDeviceResources.cpp内のvoid DX::DeviceResources::CreateDeviceResources()で実装されてました。

IDXGIFactory4::EnumWarpAdapterでWARPアダプターを取得してそこからデバイスを作成すればいいようですね。なのでDirect3D12ではWARPデバイスではなくWARPアダプターって感じのようですね。これで謎が一個解決ですね。

しかし、IDXGIFactory4のドキュメントがないのが...。

-----------以下ソース

// Create the Direct3D 12 API device object
HRESULT hr = D3D12CreateDevice(
nullptr, // Specify nullptr to use the default adapter.
D3D_FEATURE_LEVEL_11_0, // Feature levels this app can support.
IID_PPV_ARGS(&m_d3dDevice) // Returns the Direct3D device created.
);

if (FAILED(hr))
{
// If the initialization fails, fall back to the WARP device.
// For more information on WARP, see:
// http://go.microsoft.com/fwlink/?LinkId=286690

ComPtr warpAdapter;
m_dxgiFactory->EnumWarpAdapter(IID_PPV_ARGS(&warpAdapter));

DX::ThrowIfFailed(
D3D12CreateDevice(
warpAdapter.Get(),
D3D_FEATURE_LEVEL_11_0,
IID_PPV_ARGS(&m_d3dDevice)
)
);
}

« Direct3D12のUWPサンプルの話題 | トップページ | WWDCだけど »

Programming」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« Direct3D12のUWPサンプルの話題 | トップページ | WWDCだけど »