COM
- 我们必须使用特定的函数活其他的COM接口方法来获取指向COM接口的指针,而不能用new
- 释放用其基类IUnkown的Release,而不能用delete
- COM接口都以I为前缀,例如ID3D11Texture2D
纹理
- 2D纹理是一种数据元素矩阵,可以用于存储图像数据,每个元素存储一个像素颜色。也可以存储纹理法线
- 纹理只支持特定格式的数据类型。有DXGI_FORMAT枚举类型描述
- 存在一种弱类型(typeless),预先分配空间,但不解释类型。
交换链和页面翻转
- 离屏(off-screen) => 后台缓冲区(back buffer)
- 前台缓冲区(front buffer)
- 前后缓冲区互换的行为为呈现(presenting)
这一操作只是交换两者指针指向的位置,所以速度很快

- 前后缓冲区组成一个交换链(swap chain)
深度缓冲区
- 深度缓冲区与后台缓冲区大小一样
- D3D11 判断前后遮挡使用 深度缓存(depth buffering)或Z缓存(z-buffering)
纹理资源视图
纹理可以被绑定到渲染管线(rendering pipeline)的不同阶段(stage)。
将纹理作为渲染目标(即,Direct3D渲染到纹理,在渲染结果暂存在纹理中),使用标志D3D11_BIND_RENDER_TARGET
着色器资源(即,在着色器中对纹理进行采样),使用标志D3D10_BIND_SHADER_RESOURCE纹理不能直接绑定到渲染管线,只能把与资源关联的资源视图绑定到不同的管线阶段
- Direct3D始终要求我们在初始化时为纹理创建相关的资源视图(resource view),渲染目标视图(ID3D11RenderTargetView)和着色器资源视图(ID3D11ShaderResourceView)
- 创建资源时一定要指定绑定标志值,不然将无法创建资源视图
资源视图的作用
- (1)告诉Direct3D如何使用资源(即,指定资源所要绑定的管线阶段);
- (2)如果在创建资源时指定的是弱类型(typeless)格式,那么在为它创建资源视图时就必须指定明确的资源类型。对于弱类型格式,纹理元素可能会在一个管线阶段中视为浮点数,而在另一个管线阶段中视为整数。
多重采样
- 超级采样(supersampling):比如4x ssaa,将屏幕分别率提高4倍,然后每4个像素采样后取平均值。相当于深度缓存和后台缓存都扩大4倍。
- 多重采样(multisampling):比如4x msaa,只在三角形的边缘进行处理。且每一个像素分为4个子像素。深度缓存和后台缓存也会扩大4倍。
特征等级
- 特征等级定义了一系列支持不同d3d功能的相应的等级,用意即如果一个用户的硬件不支持某一特征等级,程序可以选择较低的等级。