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

こちらもご覧ください

ID3D12Device