--- title: DirectX12学习笔记(2)——Direct3D初始化 date: 2023-03-01 19:39:43 excerpt: tags: rating: ⭐ --- # Com接口 需要包含头文件#include 常用方法 - Get():取得Com接口对象。 - GetAdressof():取得Com接口指针地址。 - Rest():释放相关使用。 # 交换链 D3D使用IDXGISwapChain控制前后缓存交换。 - ResizeBuffers() - Present():呈现缓冲区内容。 # 资源描述符号 1. 常量缓冲区视图(CBV)/SRV/UAV 2. 采样器(Sample) 3. 渲染目标视图(RTV) 4. 深度/模版视图(DSV) # 多重采样技术 解析(resolve,或者可以称之为降采样) ## 利用D3D进行多重采样 首先填写DXGI_SAMPLE_DESC: ```c++ typedef struct DXGI_SAMPLE_DESC { UINT Count; UINT Quality; } DXGI_SAMPLE_DESC; ``` 之后使用ID3D12Device::CheckFeatureSupport查询到对应的质量级别: # DXGI - DXGI_MODE_DESC: 分辨率、逐行扫描、缩放方式。 - DXGI_MODE_SCANLINE_ORDER:缩放优先级。 - DXGI_MODE_SCALING:缩放方式。 # 功能支持检测 使用ID3D12Device::CheckFeatureSupport()检查功能支持情况。 - D3D12_FEATURE - D3D12_FEATURE_D3D12_OPTIONS - D3D12_FEATURE_ARCHITECHTURE - D3D12_FEATURE_FEATURE_LEVELS - D3D12_FEATURE_FORMAT_SUPPORT - D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS # CPU与GPU间的交互 ## 命令队列 DX12的命令队列被抽象为ID3D12CommandQueue。使用ID3D12Device::CreateCommandQueue()来创建。 ```c++ Microsoft::WRL::ComPtr mCommandQueue; D3D12_COMMAND_QUEUE_DESC queueDesc={}; queueDesc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT; queueDesc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE; ThrowIfFailed(md3Device->CreateCommandQueue(&queueDesc,IID_PPV_ARGS(&mCommandQueue))); ``` IID_PPV_ARGS