计算机图形学(一)

Direct3D是一种底层绘图API(application programming interface,应用程序接口),它可以使我们获得3D 硬件加速功能,提高3D 场景的渲染效率。

D3d初始化

  1. 填充一个DXGI_SWAP_CHAIN_DESC 结构体,该结构体描述了所要创建的交换链的特性
  2. 使用 D3D10CreateDeviceAndSwapChain 函数创建ID3D10Device 接口和IDXGISwapChain接口
  3. 为交换链的后台缓冲区创建一个渲染目标视图
  4. 创建深度/模板缓冲区以及相关的深度/模板视图
  5. 将渲染目标视图和深度/模板视图绑定到渲染管线的输出合并阶段,使它们可以被Direct3D使用。
  6. 设置视口。

2D纹理(texture)是一种数据元素矩阵。2D纹理的用途之一是存储2D图像数据,在纹理的每个元素中存储一个像素颜色还有一种称为法线贴图映射(normal mapping)的高级技术在纹理中存储的不是颜色,而是3D向量。

双缓冲避免动画闪烁

  • 前台缓冲区和后台缓冲区。前台缓冲区存储了当前显示在屏幕上的图像数据,而动画的下一帧会在后台缓冲区中执行绘制。当后台缓冲区的绘图工作完成之后,前后两个缓冲区的作用会发生翻转:后台缓冲区会变为前台缓冲区,而前台缓冲区会变为后台缓冲区,为下一帧的绘制工作提前做准备。我们将前后缓冲区功能互换的行为称做提交(presenting)。提交是一个运行速度很快的操作,因为它只是将前台缓冲区的指针和后台缓冲区的指针做了一个简单的交换。
  • 前后缓冲区形成了一个交换链(swap chain)在Direct3D 中,交换链由IDXGISwapChain接口表示该接口保存了前后缓冲区纹理,并提供了用于调整缓冲区尺寸的方法和提交方法。
  • 使用(前后)两个缓冲区称为双缓冲(double buffering)

深度缓冲解决物体的前后顺序

  • 深度缓冲区:0.0表示离观察者最近的物体,1.0表示离观察者最远的物体。
  • 深度缓冲区中的每个元素与后台缓冲区中的每个元素一一对应

渲染目标视图

  • 资源不能被直接绑定到一个管线阶段;我们必须为资源创建资源视图,
  • 然后把资源视图绑定到不同的管线阶段。尤其是在把后台缓冲区绑定到管线的输出合并器阶段时(使Direct3D可以在后台缓冲区上执行渲染工作),我们必须为后台缓冲区创建一个渲染目标视图(render target view)。

你可能感兴趣的:(计算机图形学)