zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Codeforces Round #333 (Div. 2) B. Approximating a Constant Range st 二分
    Codeforces Round #333 (Div. 2) A. Two Bases 水题
    SPOJ 1557. Can you answer these queries II 线段树
    线段树 模板
    Codeforces Round #115 B. Plane of Tanks: Pro 水题
    Codeforces Round #115 A. Robot Bicorn Attack 暴力
    Codeforces Beta Round #51 C. Pie or die 博弈论找规律 有趣的题~
    Codeforces Beta Round #51 B. Smallest number dfs
    Codeforces Beta Round #51 A. Flea travel 水题
    Codeforces Beta Round #51 D. Beautiful numbers 数位dp
  • 原文地址:https://www.cnblogs.com/raidencheng/p/1687753.html
Copyright © 2011-2022 走看看