> ## 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.

# CreateRootSignature

> 루트 시그니처 레이아웃을 만듭니다.

루트 시그니처 레이아웃을 만듭니다.

## 구문

```cpp theme={null}
HRESULT CreateRootSignature(
    UINT nodeMask,
    const void  pBlobWithRootSignature,
    SIZE_T blobLengthInBytes,
    const IID & riid,
    void  ppvRootSignature
)
```

### 매개 변수

*nodeMask \[in]*\
형식: UINT

단일 GPU 작동의 경우 이 값을 0으로 설정합니다. 여러 GPU 노드가 있는 경우, 루트 시그니처를 적용할 노드(디바이스의 물리적 어댑터)를 식별하는 비트를 설정합니다.
마스크의 각 비트는 하나의 노드에 해당합니다.
[멀티 어댑터 시스템](https://learn.microsoft.com/en-us/windows/win32/direct3d12/multi-engine)을 참조하세요.

*pBlobWithRootSignature \[in]*\
형식: const void \*

직렬화된 시그니처의 원본 데이터에 대한 포인터입니다.

*blobLengthInBytes \[in]*\
형식: **[SIZE\_T](https://learn.microsoft.com/en-us/windows/win32/WinProg/windows-data-types)**

<i>pBlobWithRootSignature</i>가 가리키는 메모리 블록의 크기(바이트 단위)입니다.

*riid*\
형식: const IID &

루트 시그니처 인터페이스의 전역 고유 식별자(**GUID**)입니다. 설명을 참조하세요.
입력 매개 변수입니다.

*ppvRootSignature \[out]*\
형식: void \*\*

루트 시그니처에 대한 포인터를 받는 메모리 블록에 대한 포인터입니다.

### 반환 값

형식: HRESULT

성공하면 **S\_OK**를 반환하고, 그렇지 않으면 [Direct3D 12 반환 코드](https://learn.microsoft.com/en-us/windows/win32/direct3d12/d3d12-graphics-reference-returnvalues) 중 하나를 반환합니다.

<i>pBlobWithRootSignature</i>가 가리키는 blob이 유효하지 않은 경우 이 메서드는 **E\_INVALIDARG**를 반환합니다.

## 설명

애플리케이션이 프로그램적으로 [D3D12\_ROOT\_SIGNATURE\_DESC](/reference/graphics/d3d12/structs/d3d12_root_signature_desc_public) 데이터 구조를 생성하는 경우, 직렬화된 형식을 만들기 위해 이 **D3D12\_ROOT\_SIGNATURE\_DESC**에 대한 포인터를 [D3D12SerializeRootSignature](/reference/graphics/d3d12/functions/d3d12serializerootsignature_public) 호출에 전달해야 합니다.
그런 다음 애플리케이션은 **ID3D12Device::CreateRootSignature** 호출에서 직렬화된 형식을 <i>pBlobWithRootSignature</i>에 전달합니다.

루트 시그니처 레이아웃에 대한 인터페이스의 **REFIID** 또는 **GUID**는 \_\_uuidof() 매크로를 사용하여 얻을 수 있습니다.
예를 들어, \_\_uuidof([ID3D12RootSignature](/reference/graphics/d3d12/interfaces/id3d12rootsignature/id3d12rootsignature_public))는 루트 시그니처에 대한 인터페이스의 **GUID**를 가져옵니다.

#### 예제

[D3D12HelloTriangle](https://learn.microsoft.com/en-us/windows/win32/direct3d12/working-samples) 샘플은 다음과 같이 **ID3D12Device::CreateRootSignature**를 사용합니다:

빈 루트 시그니처를 만듭니다.

```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\_xs.h 또는 d3d12\_x.h\
**라이브러리:** d3d12\_xs.lib 또는 d3d12\_x.lib\
**지원 플랫폼**: XBOX Series 콘솔 및 XBOX One 제품군

## 함께 보기

[ID3D12Device](/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

- [D3D12SerializeRootSignature](/ko/reference/graphics/d3d12/functions/d3d12serializerootsignature_public.md)
- [D3D12CreateRootSignatureDeserializer](/ko/reference/graphics/d3d12/functions/d3d12createrootsignaturedeserializer_public.md)
- [D3D12CreateVersionedRootSignatureDeserializer](/ko/reference/graphics/d3d12/functions/d3d12createversionedrootsignaturedeserializer_public.md)
- [CreateCommandSignature](/ko/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createcommandsignature_public.md)
- [D3D_ROOT_SIGNATURE_VERSION](/ko/reference/graphics/d3d12/enums/d3d_root_signature_version_public.md)
