天天看点

Direct3D 12——学习——初始化D3D——5——创建命令分配器CreateCommandAllocator

是一种和命令列表有关的内存管理类接口,记录在命令列表内的命令,实际上是存储在与之关联的命令分配器上,当调用ID3D12CommandQueue::ExecuteCommandLists() 方法执行命令列表的时候,命令队列就会引用分配器里的命令

ThrowIfFailed(md3dDevice->CreateCommandAllocator(
		D3D12_COMMAND_LIST_TYPE_DIRECT,
		IID_PPV_ARGS(mDirectCmdListAlloc.GetAddressOf())));
           

参数 type D3D12_COMMAND_LIST_TYPE

D3D12_COMMAND_LIST_TYPE_DIRECT	= 0    指定 GPU 可执行的命令缓冲区。 直接命令列表不会继承任何 GPU 状态。
    
    D3D12_COMMAND_LIST_TYPE_BUNDLE	= 1,   指定只能通过直接命令列表执行的命令缓冲区。 捆绑命令列表继承当前设置的管道状态对象和基元拓扑) 之外的所有 GPU 状态 (。
    
    D3D12_COMMAND_LIST_TYPE_COMPUTE	= 2,  指定用于计算的命令缓冲区。
    
    D3D12_COMMAND_LIST_TYPE_COPY	= 3,      指定用于复制的命令缓冲区。
    D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE	= 4,  指定用于视频解码的命令缓冲区。
    D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS	= 5,  指定用于视频处理的命令缓冲区。
    D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE	= 6
           

继续阅读