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 |