Files
BlueRoseNote/04-ComputerGraphics/Directx12/DirectX12学习笔记(2)——Direct3D初始化.md

1.7 KiB
Raw Blame History

title, date, excerpt, tags, rating
title date excerpt tags rating
DirectX12学习笔记2——Direct3D初始化 2023-03-01 19:39:43

Com接口

需要包含头文件#include <wrl.h>

常用方法

  • Get()取得Com接口对象。
  • GetAdressof()取得Com接口指针地址。
  • Rest():释放相关使用。

交换链

D3D使用IDXGISwapChain控制前后缓存交换。

  • ResizeBuffers()
  • Present():呈现缓冲区内容。

资源描述符号

  1. 常量缓冲区视图CBV/SRV/UAV
  2. 采样器Sample
  3. 渲染目标视图RTV
  4. 深度/模版视图DSV)

多重采样技术

解析resolve或者可以称之为降采样

利用D3D进行多重采样

首先填写DXGI_SAMPLE_DESC

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()来创建。

Microsoft::WRL::ComPtr<ID3D12Debug> 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