D3D12SerializeRootSignature 関数 (d3d12.h)
ID3D12Device::CreateRootSignature に渡すことができるルート署名バージョン 1.0 をシリアル化します。
構文
HRESULT D3D12SerializeRootSignature(
[in] const D3D12_ROOT_SIGNATURE_DESC *pRootSignature,
[in] D3D_ROOT_SIGNATURE_VERSION Version,
[out] ID3DBlob **ppBlob,
[out, optional] ID3DBlob **ppErrorBlob
);
パラメーター
[in] pRootSignature
型: const D3D12_ROOT_SIGNATURE_DESC*
D3D12_ROOT_SIGNATURE_DESC構造体へのポインターとしてのルート署名の説明。
[in] Version
種類: D3D_ROOT_SIGNATURE_VERSION
ルート署名のバージョンを指定する D3D_ROOT_SIGNATURE_VERSION型指定された値。
[out] ppBlob
種類: ID3DBlob**
シリアル化されたルート署名へのアクセスに使用できる ID3DBlob インターフェイスへのポインターを受け取るメモリ ブロックへのポインター。
[out, optional] ppErrorBlob
種類: ID3DBlob**
シリアライザー のエラー メッセージへのアクセスに使用できる ID3DBlob インターフェイスへのポインターを受け取るメモリ ブロックへのポインター。エラーがない場合は NULL 。
戻り値
種類: HRESULT
成功した場合は、S_OKを返します。それ以外の場合は、Direct3D 12リターン コードのいずれかを返します。
解説
この関数は、Windows 10 Anniversary Update (14393) の時点で D3D12SerializeVersionedRootSignature によって重ね合わされています。
アプリケーションがD3D12_ROOT_SIGNATURE_DESCデータ構造を手続き的に生成する場合、シリアル化されたフォームを作成するには、D3D12SerializeRootSignature の呼び出しでこのD3D12_ROOT_SIGNATURE_DESCへのポインターを渡す必要があります。 その後、アプリケーションは、 ppBlob が ID3D12Device::CreateRootSignature を指すシリアル化されたフォームを渡します。
ルート署名を含むシェーダーを作成した場合、コンパイルされたシェーダーには既にシリアル化されたルート署名が含まれることになります。 この場合は、コンパイルされたシェーダー BLOB を ID3D12Device::CreateRootSignature に渡して、ランタイム ルート署名オブジェクトを取得します。
関数シグネチャ PFN_D3D12_SERIALIZE_ROOT_SIGNATUREは typedef として提供されるため、静的リンクではなく動的リンク手法 (GetProcAddress) を使用できます。
例
空のルート署名を作成します。
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 |