[toc]

# 组件对象模型

我们通常将 COM 视为一种接口,DirectX 通过使用引用计数的方法来管理这些组件占用的内存。
常用的三个和 COM 相关的方法如下:

  • Get
  • GetAddressOf
  • Reset

# 纹理格式

2D 纹理是一种由数据元素构成的矩阵。它的用途之一是存储 2D 图像数据,即每个元素存储的都是一像素的颜色。
但是,纹理贴图的用处并非只有贴图。例如,有种 法线贴图 的技术,其纹理内每个元素存储的是一个 3D 向量,而非像素。
因此,尽管纹理贴图给人第一印象是用来存储图像像素,但实际上它的用途却十分广泛。
基于上述知识,我们可以认为纹理贴图的每个元素也不一定是像素,DX 中支持每个纹理贴图中存储的元素类型列表如下:

# 交换链和页面翻转

这个交换链需要使用到硬件管理的两个缓冲区, 前台缓冲区后台缓冲区 。每次前台缓冲区绘制结束后会转变成后台缓冲区。
这种交换操作只需要交换两个缓冲区的指针即可 也有使用三重缓冲的情况,如 VSync

# 深度缓冲

Z-Buffer , 使用 ZBuffer 的物体的绘制顺序已经无关紧要了,但是透明物体需要特别注意。
深度值存储的是像素的深度值,通常是归一化到某个空间内的值。但这个值并非只有 [01], 也可以是 [0255], 在 DX12 中可以通过设置深度缓冲区的格式来确定缓冲区内存储的值

# 资源与描述符

在发生控制命令 (读 / 写缓冲区) 之前,我们需要将本次绘制调用 (draw call) 相关的资源 绑定 到渲染流水线上。由于部分资源可能发生改变,那时就需要重新绑定。
通过 描述符 进行绑定。描述符在指定资源位置的同时,还可以指定资源的类型。

Tips: 视图(view)描述符(descriptor) 是同义词

# 多重采样技术

多重采样技术 - 抗锯齿

# SSAA 超采样

Super Sample Anti-Aliasing
方法很粗暴,使用屏幕像素的四倍大小进行绘制,显示时按 4 个像素一组进行 降采样 ,每组求平均, 但是这种方法处理数量和内存都达到了之前的4倍
还有种方式是 MSAA(多重采样)
假设在 4x 采样下,MSAA 同样会采用 4 倍深度缓冲区和后台缓冲区,但是会将一个像素划分为四个 子像素
但在实际的计算中时,不会对每个子像素进行计算,而是计算四个子像素的中心点的平均值作为当前像素的输出值。

# 功能级别

DirectX11 之后,DX 引进了功能级别的概念, D3D_FEATURE_LEVEL , 功能级别的目的是确定当前 GPU 所支持的最小功能集。即,如果用户不支持

# DirectX 图形基础结构

又称 DXGI (DirectX Graphics Infrastructure)

# 获取显示适配器列表

通过

1
mdxgiFactory->EnumAdapters(i, &adapter) 

找到当前设备中的图形适配器列表

# 用于描述显示器的数据结构

# 资源驻留

资源驻留主要是为了让用户确定哪部分数据需要留在现存中,那部分不需要