> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# D3D12SerializeRootSignature

> ID3D12Device::CreateRootSignature に渡すことができる、バージョン 1.0 のルート署名をシリアル化します。

[ID3D12Device::CreateRootSignature](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createrootsignature_public) に渡すことができる、バージョン 1.0 のルート署名をシリアル化します。

## 構文

```cpp theme={null}
HRESULT D3D12SerializeRootSignature(
    const D3D12_ROOT_SIGNATURE_DESC  pRootSignature,
    D3D_ROOT_SIGNATURE_VERSION Version,
    ID3DBlob  ppBlob,
    ID3DBlob  ppErrorBlob
)
```

### パラメーター

*pRootSignature \[in]*\
型: const D3D12\_ROOT\_SIGNATURE\_DESC \*

ルート署名の記述。[D3D12\_ROOT\_SIGNATURE\_DESC](/reference/graphics/d3d12/structs/d3d12_root_signature_desc_public) 構造体へのポインター。

*Version \[in]*\
型: D3D\_ROOT\_SIGNATURE\_VERSION

ルート署名のバージョンを指定する [D3D\_ROOT\_SIGNATURE\_VERSION](/reference/graphics/d3d12/enums/d3d_root_signature_version_public) 型の値。

*ppBlob \[out]*\
型: ID3DBlob \*\*

シリアル化されたルート署名にアクセスするために使用できる **ID3DBlob** インターフェイスへのポインターを受け取るメモリ ブロックへのポインター。

*ppErrorBlob \[out, optional]*\
型: ID3DBlob \*\*

シリアル化のエラー メッセージにアクセスするために使用できる **ID3DBlob** インターフェイスへのポインターを受け取るメモリ ブロックへのポインター。エラーがない場合は **NULL** を受け取ります。

### 戻り値

型: HRESULT

成功した場合は **S\_OK** を返します。それ以外の場合は、[Direct3D 12 リターン コード](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/d3d12-graphics-reference-returnvalues) のいずれかを返します。

## 解説

この関数は、Windows 10 Anniversary Update (14393) 時点で [D3D12SerializeVersionedRootSignature](/reference/graphics/d3d12/functions/d3d12serializeversionedrootsignature_public) に置き換えられました。

アプリケーションが [D3D12\_ROOT\_SIGNATURE\_DESC](/reference/graphics/d3d12/structs/d3d12_root_signature_desc_public) データ構造をプロシージャルに生成する場合、シリアル化された形式を作成するために、**D3D12SerializeRootSignature** の呼び出しでこの **D3D12\_ROOT\_SIGNATURE\_DESC** へのポインターを渡す必要があります。
その後、アプリケーションは、<i>ppBlob</i> が指すシリアル化された形式を [ID3D12Device::CreateRootSignature](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createrootsignature_public) に渡します。

シェーダーがルート署名を含んで作成されている場合、コンパイル済みシェーダーには既にシリアル化されたルート署名が含まれています。この場合、コンパイル済みシェーダー ブロブを [ID3D12Device::CreateRootSignature](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createrootsignature_public) に渡して、実行時のルート署名オブジェクトを取得します。

関数シグネチャ PFN\_D3D12\_SERIALIZE\_ROOT\_SIGNATURE は typedef として提供されるため、静的リンクではなく、動的リンク手法 ([GetProcAddress](https://learn.microsoft.com/en-us/windows/desktop/api/libloaderapi/nf-libloaderapi-getprocaddress)) を使用できます。

#### 例

空のルート署名を作成します。

```cpp theme={null}
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)));

```

[D3D12 リファレンスのサンプル コード](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/notes-on-example-code) を参照してください。

<div class="code" />

## 要件

**ヘッダー:** d3d12\_xs.h または d3d12\_x.h\
**ライブラリ:** d3d12\_xs.lib または d3d12\_x.lib\
**サポートされるプラットフォーム**: XBOX Series 本体および XBOX One ファミリ

## 関連項目

[コア関数](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/direct3d-12-functions)

[ルート署名の作成](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/creating-a-root-signature)
