以下是 ID3D12GraphicsCommandList 接口的简要声明:
#include <d3d12.h>
// ...
interface ID3D12GraphicsCommandList : public ID3D12CommandList
{
virtual HRESULT STDMETHODCALLTYPE Close(void) = 0;
virtual HRESULT STDMETHODCALLTYPE Reset(
_In_ ID3D12CommandAllocator *pAllocator,
_In_opt_ ID3D12PipelineState *pInitialState) = 0;
virtual void STDMETHODCALLTYPE ClearState(
_In_opt_ ID3D12PipelineState *pPipelineState) = 0;
// 其他方法...
};
这个接口的主要方法包括:
- Close: 结束命令列表的记录,准备提交给 GPU 执行。
- Reset: 重置命令列表,以便在新的命令记录之前进行清理和准备工作。
- ClearState: 清除命令列表的当前状态,可选择设置新的管道状态。
在使用 ID3D12GraphicsCommandList 接口时,通常的流程是通过 Reset 开始记录命令,然后使用一系列的绘图命令函数(如 DrawIndexedInstanced、DrawInstanced 等)记录需要执行的 GPU 命令,最后调用 Close 完成命令列表的记录。命令列表随后可以提交给 GPU 执行。
请注意,Direct3D 12 的使用可能需要考虑到 GPU 和 CPU 的异步执行,以充分利用硬件资源。
转载请注明出处:http://www.pingtaimeng.com/article/detail/26130/Win32 API/D3d12.h/ID3D12GraphicsCommandList