D3D学习总结基础篇(三)Direct X 10 初始化

经过了前两篇文章的纸上谈兵,终于到了完全接触coding的时刻啦。这篇文章说的是D3D程序启动时的初始化过程。如果直接看code,可能会觉得初始化过程非常复杂,并且其实最后也就出来个空白窗口,但如果具体分析每一步的话,可以发现D3D作为底层的图像引擎,已经非常的易用了。另外,按惯例说明下,本文使用了Introduction to 3D Game Programming with DirectX 10中的理论,代码和图片,在很多部分,笔者只是做了翻译整理工作。

--------------------------------分割线-----------------------------------------------------------------------------------------------------------------------

首先,还是理论上说下D3D初始化的过程,一共有6个步骤:

  1. 设定swap chain(啥是swap chain,见上一篇博文)。
  2. 创建ID3D10Device和 IDXGISwapChain接口,D3D SDK提供了不止一种创建方法。
  3. 在swap chain上创建渲染目标视图(render target view)。Render target view上一篇博文漏掉没写,这里补充下:

    每一个Texture最终都会被显卡的渲染管线(rendering pipeline)渲染,所以一般来说,我们需要讲Texture和pipeline绑定到一起。而在D3D中,你不是将Texture绑定到每个pipeline上,而是创建一个render target view和pipeline绑定,那这个view是用来做什么的呢,它来告诉显卡,该怎么处理这个Texture,相当于在运行时做类型验证和一些别的验证。在初始化的时候,需要将这些view都创建好,这样无论是效率还是编程的严谨性上来说,都是比较重要的。(这段话包含一些个人意见,仅供参考)。

  4. 创建Depth/stencil buffer以及其相关的depth/stencil view。(后面会具体说)
  5. 将各个view和渲染管线绑定。
  6. 设定viewpoint,这个最简单。

初始化的过程,看起来代码量虽然多,但事实上比较简单,里面没什么图形学的知识,只是一些API的规约。

我把书中的例子配置成一个现成的项目,不出意外可以由vs2008直接打开,有兴趣的朋友可以留个邮箱,大家交流下。

Raiden Cheng
原文地址:https://www.cnblogs.com/raidencheng/p/1687753.html