다음을 통해 공유


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(Globally Unique Identifier)입니다. 설명 부분을 참조하세요. 입력 매개 변수입니다.

[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
라이브러리 D3D12.lib
DLL D3D12.dll

추가 정보

ID3D12Device