ID3D12Device::CreateRootSignature メソッド (d3d12.h)
ルート署名レイアウトを作成します。
構文
HRESULT CreateRootSignature(
[in] UINT nodeMask,
[in] const void *pBlobWithRootSignature,
[in] SIZE_T blobLengthInBytes,
REFIID riid,
[out] void **ppvRootSignature
);
パラメーター
[in] nodeMask
型: UINT
単一 GPU 操作の場合は、これを 0 に設定します。 複数の GPU ノードがある場合は、ルート署名を適用するノード (デバイスの物理アダプター) を識別するビットを設定します。 マスク内の各ビットは、単一ノードに対応します。 「マルチアダプター システム」を参照してください。
[in] pBlobWithRootSignature
型: const void*
シリアル化された署名のソース データへのポインター。
[in] blobLengthInBytes
種類: SIZE_T
pBlobWithRootSignature が指すメモリ ブロックのサイズ (バイト単位)。
riid
型: REFIID
ルート署名インターフェイスのグローバル一意識別子 (GUID)。 「解説」を参照してください。 入力パラメーター。
[out] ppvRootSignature
型: void**
ルート署名へのポインターを受け取るメモリ ブロックへのポインター。
戻り値
型: HRESULT
成功した場合はS_OKを返します。それ以外の場合は、Direct3D 12リターン コードのいずれかを返します。
pBlobWithRootSignature が指す BLOB が無効な場合、このメソッドはE_INVALIDARGを返します。
注釈
アプリケーションがD3D12_ROOT_SIGNATURE_DESCデータ構造を手続き的に生成する場合、シリアル化されたフォームを作成するには、D3D12SerializeRootSignature の呼び出しでこのD3D12_ROOT_SIGNATURE_DESCへのポインターを渡す必要があります。 その後、アプリケーションは ID3D12Device::CreateRootSignature の呼び出しでシリアル化されたフォームを pBlobWithRootSignature に渡します。
ルート署名レイアウトへのインターフェイスの REFIID ( GUID) は、__uuidof() マクロを使用して取得できます。 たとえば、__uuidof(ID3D12RootSignature) は、インターフェイスの GUID を ルート署名に取得します。
例
D3D12HelloTriangle サンプルでは、次のように ID3D12Device::CreateRootSignature を使用します。
空のルート署名を作成します。
CD3DX12_ROOT_SIGNATURE_DESC rootSignatureDesc;
rootSignatureDesc.Init(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT);
ComPtr<ID3DBlob> signature;
ComPtr<ID3DBlob> error;
ThrowIfFailed(D3D12SerializeRootSignature(&rootSignatureDesc, D3D_ROOT_SIGNATURE_VERSION_1, &signature, &error));
ThrowIfFailed(m_device->CreateRootSignature(0, signature->GetBufferPointer(), signature->GetBufferSize(), IID_PPV_ARGS(&m_rootSignature)));
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | d3d12.h |
Library | D3D12.lib |
[DLL] | D3D12.dll |