ID3D12Device::CreateRootSignature method (d3d12.h)
Membuat tata letak tanda tangan akar.
Sintaks
HRESULT CreateRootSignature(
[in] UINT nodeMask,
[in] const void *pBlobWithRootSignature,
[in] SIZE_T blobLengthInBytes,
REFIID riid,
[out] void **ppvRootSignature
);
Parameter
[in] nodeMask
Jenis: UINT
Untuk operasi GPU tunggal, atur ini ke nol. Jika ada beberapa simpul GPU, atur bit untuk mengidentifikasi simpul (adaptor fisik perangkat) yang akan diterapkan tanda tangan akar. Setiap bit dalam masker sesuai dengan satu simpul. Lihat Sistem multi-adaptor.
[in] pBlobWithRootSignature
Jenis: const void*
Penunjuk ke data sumber untuk tanda tangan serial.
[in] blobLengthInBytes
Jenis: SIZE_T
Ukuran, dalam byte, dari blok memori yang dituju pBlobWithRootSignature .
riid
Jenis: REFIID
Pengidentifikasi unik global (GUID) untuk antarmuka tanda tangan akar. Lihat Keterangan. Parameter input.
[out] ppvRootSignature
Jenis: batal**
Penunjuk ke blok memori yang menerima penunjuk ke tanda tangan akar.
Mengembalikan nilai
Jenis: HRESULT
Mengembalikan S_OK jika berhasil; jika tidak, mengembalikan salah satu Kode Pengembalian Direct3D 12.
Metode ini mengembalikan E_INVALIDARG jika blob yang dituju pBlobWithRootSignature tidak valid.
Keterangan
Jika aplikasi secara prosedural menghasilkan struktur data D3D12_ROOT_SIGNATURE_DESC , aplikasi harus meneruskan penunjuk ke D3D12_ROOT_SIGNATURE_DESC ini dalam panggilan ke D3D12SerializeRootSignature untuk membuat formulir berseri. Aplikasi kemudian meneruskan formulir berseri ke pBlobWithRootSignature dalam panggilan ke ID3D12Device::CreateRootSignature.
REFIID, atau GUID, antarmuka ke tata letak tanda tangan akar dapat diperoleh dengan menggunakan makro __uuidof(). Misalnya, __uuidof(ID3D12RootSignature) akan mendapatkan GUID antarmuka ke tanda tangan root.
Contoh
Sampel D3D12HelloTriangle menggunakan ID3D12Device::CreateRootSignature sebagai berikut:
Buat tanda tangan akar kosong.
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)));
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | d3d12.h |
Pustaka | D3D12.lib |
DLL | D3D12.dll |