D3D学习总结基础篇(三)--Direct X 10 初始化
2010-03-17 00:22
155 查看
经过了前两篇文章的纸上谈兵,终于到了完全接触coding的时刻啦。这篇文章说的是D3D程序启动时的初始化过程。如果直接看code,可能会觉得初始化过程非常复杂,并且其实最后也就出来个空白窗口,但如果具体分析每一步的话,可以发现D3D作为底层的图像引擎,已经非常的易用了。另外,按惯例说明下,本文使用了Introduction to 3D Game Programming with DirectX 10中的理论,代码和图片,在很多部分,笔者只是做了翻译整理工作。
--------------------------------分割线-----------------------------------------------------------------------------------------------------------------------
首先,还是理论上说下D3D初始化的过程,一共有6个步骤:
设定swap chain(啥是swap chain,见上一篇博文)。
创建ID3D10Device和 IDXGISwapChain接口,D3D SDK提供了不止一种创建方法。
在swap chain上创建渲染目标视图(render target view)。Render target view上一篇博文漏掉没写,这里补充下:
每一个Texture最终都会被显卡的渲染管线(rendering pipeline)渲染,所以一般来说,我们需要讲Texture和pipeline绑定到一起。而在D3D中,你不是将Texture绑定到每个pipeline上,而是创建一个render target view和pipeline绑定,那这个view是用来做什么的呢,它来告诉显卡,该怎么处理这个Texture,相当于在运行时做类型验证和一些别的验证。在初始化的时候,需要将这些view都创建好,这样无论是效率还是编程的严谨性上来说,都是比较重要的。(这段话包含一些个人意见,仅供参考)。
创建Depth/stencil buffer以及其相关的depth/stencil view。(后面会具体说)
将各个view和渲染管线绑定。
设定viewpoint,这个最简单。
初始化的过程,看起来代码量虽然多,但事实上比较简单,里面没什么图形学的知识,只是一些API的规约。
我把书中的例子配置成一个现成的项目,不出意外可以由vs2008直接打开,有兴趣的朋友可以留个邮箱,大家交流下。
--------------------------------分割线-----------------------------------------------------------------------------------------------------------------------
首先,还是理论上说下D3D初始化的过程,一共有6个步骤:
设定swap chain(啥是swap chain,见上一篇博文)。
创建ID3D10Device和 IDXGISwapChain接口,D3D SDK提供了不止一种创建方法。
在swap chain上创建渲染目标视图(render target view)。Render target view上一篇博文漏掉没写,这里补充下:
每一个Texture最终都会被显卡的渲染管线(rendering pipeline)渲染,所以一般来说,我们需要讲Texture和pipeline绑定到一起。而在D3D中,你不是将Texture绑定到每个pipeline上,而是创建一个render target view和pipeline绑定,那这个view是用来做什么的呢,它来告诉显卡,该怎么处理这个Texture,相当于在运行时做类型验证和一些别的验证。在初始化的时候,需要将这些view都创建好,这样无论是效率还是编程的严谨性上来说,都是比较重要的。(这段话包含一些个人意见,仅供参考)。
创建Depth/stencil buffer以及其相关的depth/stencil view。(后面会具体说)
将各个view和渲染管线绑定。
设定viewpoint,这个最简单。
初始化的过程,看起来代码量虽然多,但事实上比较简单,里面没什么图形学的知识,只是一些API的规约。
我把书中的例子配置成一个现成的项目,不出意外可以由vs2008直接打开,有兴趣的朋友可以留个邮箱,大家交流下。
相关文章推荐
- D3D学习总结基础篇(二)--从古墓丽影的画面设置了解基础概念
- D3D学习总结基础篇(一)--数学基础
- (学习总结)鸟哥基础篇第三版:第十九章
- 设计模式学习总结10 - 行为型5 - State状态模式
- 10-10———今日学习总结
- Selenium自动化测试工具学习总结(基础篇)
- Nginx学习总结(10)——Nginx前后端分离将多个请求转发到多个Tomcat,负载均衡反向代理
- Mysql学习总结(10)——MySql触发器使用讲解
- Docker学习总结(10)——10分钟玩转Docker
- HTML5学习总结-10 Android 控件WebView显示网页
- MFC学习总结 (67个技巧) dlg 上建立View 2011-10-18 15:54:15
- 深度学习DeepLearning.ai系列课程学习总结:10. 初始化、正则化、梯度检查实战
- MyBatis学习总结(10)——批量操作
- SQL SERVER 基础篇(一):知识点、SQL语句学习及详细总结
- 设计模式学习总结(10) 享元模式
- OpenCV for Ios 学习笔记(10)-标记检测总结
- JAVA编程思想学习总结:第五章——初始化与清理
- 黑马程序员之ios学习总结——10 OC语言的构造方法和分类
- day_1_10 JavaWeb系列学习总结之servlet
- 敏捷开发系列学习总结(10)——到底什么是敏捷开发?