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**
serializer 오류 메시지에 액세스하는 데 사용할 수 있는 ID3DBlob 인터페이스에 대한 포인터를 수신하는 메모리 블록에 대한 포인터이거나 오류가 없는 경우 NULL 입니다.
반환 값
형식: HRESULT
성공하면 S_OK 반환합니다. 그렇지 않으면 Direct3D 12 반환 코드 중 하나를 반환합니다.
설명
이 함수는 Windows 10 1주년 업데이트(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 |
라이브러리 | D3D12.lib |
DLL | D3D12.dll |