ID3D12Device::CreateCommandList-Methode (d3d12.h)
Erstellt eine Befehlsliste.
Syntax
HRESULT CreateCommandList(
[in] UINT nodeMask,
[in] D3D12_COMMAND_LIST_TYPE type,
[in] ID3D12CommandAllocator *pCommandAllocator,
[in, optional] ID3D12PipelineState *pInitialState,
[in] REFIID riid,
[out] void **ppCommandList
);
Parameter
[in] nodeMask
Typ: UINT
Legen Sie bei Einzel-GPU-Vorgängen diesen Wert auf 0 (null) fest. Wenn mehrere GPU-Knoten vorhanden sind, legen Sie ein Bit fest, um den Knoten (den physischen Adapter des Geräts) zu identifizieren, für den die Befehlsliste erstellt werden soll. Jedes Bit in der Maske entspricht einem einzelnen Knoten. Es muss nur ein Bit festgelegt werden. Weitere Informationen finden Sie unter Multi-Adapter-Systeme.
[in] type
Gibt den Typ der zu erstellenden Befehlsliste an.
[in] pCommandAllocator
Typ: ID3D12CommandAllocator*
Ein Zeiger auf das Befehlszuweisungsobjekt, aus dem das Gerät Befehlslisten erstellt.
[in, optional] pInitialState
Typ: ID3D12PipelineState*
Ein optionaler Zeiger auf das Pipelinestatusobjekt, das den anfänglichen Pipelinestatus für die Befehlsliste enthält. Wenn dies der Wert ist nullptr
, legt die Laufzeit einen Dummy-Anfangsstatus der Pipeline fest, sodass Treiber sich nicht mit dem undefinierten Zustand befassen müssen. Der Aufwand hierfür ist gering, insbesondere für eine Befehlsliste, bei der die Gesamtkosten für die Aufzeichnung der Befehlsliste wahrscheinlich die Kosten einer einzelnen Anfangszustandseinstellung in den Schatten stellen. Wenn Sie den anfänglichen Pipelinezustandsparameter nicht festlegen, fallen daher nur geringe Kosten an, wenn dies umständlich ist.
Für Bundles kann es dagegen sinnvoller sein, den Anfänglichzustandsparameter festzulegen (da Bundles insgesamt wahrscheinlich kleiner sind und häufig wiederverwendet werden können).
[in] riid
Typ: REFIID
Ein Verweis auf die GUID (Globally Unique Identifier) der Befehlslistenschnittstelle, die in ppCommandList zurückgegeben werden soll.
[out] ppCommandList
Typ: void**
Ein Zeiger auf einen Speicherblock, der einen Zeiger auf die ID3D12CommandList - oder ID3D12GraphicsCommandList-Schnittstelle für die Befehlsliste empfängt.
Rückgabewert
Typ: HRESULT
Wenn die Funktion erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein HRESULT-Fehlercode zurückgegeben.
Rückgabewert | BESCHREIBUNG |
---|---|
E_OUTOFMEMORY | Es ist nicht genügend Arbeitsspeicher vorhanden, um die Befehlsliste zu erstellen. |
Weitere mögliche Rückgabewerte finden Sie unter Direct3D 12-Rückgabecodes .
Hinweise
Das Gerät erstellt Befehlslisten aus der Befehlszuweisung.
Beispiele
Im D3D12Bundles-Beispiel wird ID3D12Device::CreateCommandList wie folgt verwendet.
Erstellen Sie die Pipelineobjekte.
ComPtr<ID3D12CommandAllocator> m_commandAllocator;
ComPtr<ID3D12GraphicsCommandList> m_commandList;
Erstellen Sie eine Befehlszuweisung.
ThrowIfFailed(m_device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&m_commandAllocator)));
Erstellen der direkten Befehlsliste.
ThrowIfFailed(m_device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, m_commandAllocator.Get(), nullptr, IID_PPV_ARGS(&m_commandList)));
Weitere Informationen finden Sie im Beispielcode in der D3D12-Referenz.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | d3d12.h |
Bibliothek | D3D12.lib |
DLL | D3D12.dll |