Bagikan melalui


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

Lihat juga

ID3D12Device