A place full of passion - Crius  
人生每一天都在进步。
日历
<2010年7月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567
统计
  • 随笔 - 13
  • 文章 - 0
  • 评论 - 1
  • 引用 - 0

导航

常用链接

留言簿

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

转自:http://fotoone.spaces.live.com/blog/cns!68DE430B0B5562FB!901.entry
和WQ谈起有关游戏开发和Direct3D编程的事,因为他是入门者,所以,我给他提了点入门级的学习建议。

1. 浏览一下DirectX SDK中Direct3D 10教程

DirectX SDK肯定是要好好研究和学习的。目前DirectX的最新版本是v10,v11不久将大驾光临。SDK的最新版本是March 2009 DirectX SDK。在DirectX SDK中,主要学习Direct3D 10的内容。SDK中有一个Direct3D系列教程,可以把这个系列教程的文档看看,编译和运行教程中的所有程序,得到一点3D编程的感觉,这个时候不需要对其中涉及的概念原理有很深的了解。

2. 了解下游戏引擎

但是,在深入学习Direct3D之前,建议看看Jake Simpson的Game Engine Anatomy 101系列文章,是用来讲解游戏引擎的,中文翻译是游戏引擎剖析。在看完后,会对游戏引擎有较全面的了解,大致会知道在一个游戏引擎中,图形渲染起什么作用,Direct3D在游戏引擎中是干嘛的,处在一个什么位置。

3. 了解Direct3D graphics pipeline一般原理和组成(固定功能流水线和可编程流水线)

学习Direct3D,就是要掌握Direct3D graphics pipeline。在了解了游戏引擎之后,阅读一下ExtremeTech 3D Pipeline Tutorial 或者Real-Time rendering第三版的第二章(The Graphics Rendering Pipeline),它们都是讲述实时Direct3D graphics pipeline的一般原理的。我个人感觉前一篇文章内容要多点,也稍微难懂点。 当然,最好2篇文章都看看,可以相互参照进行阅读。

BTW,Real-Time rendering是一本很好的图形学的书,要成为图形学专业人士的话,可以认真研究,现在最新版是第三版,唉,想起我以前的买的三本图形学教材都过时了,计算机图形学可真是发展太快了!

4. 学习Direct3D graphics pipeline

这几篇文章看过后,再花功夫好好研究DirectX SDK中的DirectX Documentation for C++,特别要明白Direct3D graphics pipeline的各个阶段。这个阶段也可以找本DirectX入门书看看,网上有人推荐Introduction To Direct3D9,有中文版,我没看过,但这本书是讲Direct3D 9,而非Direct3D 10和Direct3D 11,由于架构上的变化(Direct3D 10抛弃了固定功能的vertex和pixel处理),和Shader Model变更(抛弃了老版本的Shader Model,只支持全新的Shader Model 4),以及Shader编程语言的变化(不再支持汇编,只支持HLSL),Direct3D 9和Direct3D 10有很大的区别,所以不推荐入门者浪费青春去学习Direct3D 9,而应该直接学习Direct3D 10和Direct3D 11。

在阅读DirectX Documentation for C++的时候,也阅读Real-Time rendering第三版的第三章(The Graphics Processing Unit),在这个学习阶段,我强烈推荐看Programming Vertex, Geometry, and Pixel Shaders。

另外,可以参考一下Richard Thomson的Direct3D Graphics Pipeline资料,主要看看其中的Direct3D Graphics Pipeline  Poster,这张图类似Direct3D API迷宫的导航图,我个人感觉在学习和掌握Direct3D API方面,很有价值。 同样,要注意的是Richard Thomson的Direct3D Graphics Pipeline  Poster针对的是Direct3D 9.0版本,此图不反映最新的Direct3D流水线,但此图依然对理解Direct3D 10/11 pipeline有参考价值,比如:Direct3D 9 Graphics Pipeline  Poster图中的Vertex Assembly以上部分可以理解为Direct3D 10/11 pipeline中的Input-Assembler Stage(IAS),同样,Vertex Assembly到Primitive Assembly的之间的部分理解为Direct3D 10/11 pipeline中的Vertex Shader Stage(VSS),Primitive Assembly到Rasterization and Component Interpolation之间的部分理解为Rasterizer Stage(RS),Rasterization and Component Interpolation和Fog Blend之间的部分理解为Pixel Shader Stage(PSS),Fog Blend以下的部分则理解为Output-Merger Stage(OMS)。另外,Direct3D 9中的一些处理阶段,比如Alpha Test,在Direct3D 10没有单独实现,需要编写Pixel Shader实现,所以,Direct3D 10/11 pipeline中不会出现Alpha Test处理阶段。

BTW, 写到这,我突然想,我是不是该把Richard Thomson的Direct3D 9 Graphics Pipeline  Poster的图改写一下,发布一张Direct3D 10/11 Graphics Pipeline Poster?  恩,不过,我想Richard Thomson自己会做这个工作的!

最新版本的March 2009 DirectX SDK主要包括的是Direct3D 10&9 Graphics Pipeline的内容,有关最新Direct3D 11 Graphics Pipeline的内容,可以看看Introduction to the Direct3D 11 Graphics Pipeline中的PPT,或者阅读一下March 2009 DirectX SDK中的Direct3D 11 Technical Preview,不过现在看不看都没有什么关系,毕竟Direct3D 11还不知道何时正式登场。

5. 根据自己的兴趣,挑选几个Direct3D Samples进行研究

理解了Direct3D图形流水线之后,可以根据兴趣学习图形学中的不同方面的知识,比如,对动画、阴影感兴趣,就可以重点研究Direct3D Samples中的动画、阴影的例子。研究代码的同时,也学习动画、阴影原理,这样学起来,得心应手。

6. 学习Direct3D的方法总结

在我看来,学习,应该首先建立系统框架图,就好比去游乐园玩,有导航图一样,学习的时候,才不会迷失在错综复杂的技术细节之中。然后,再像玩拼图游戏一样,把系统的各个知识面拼缀到这个系统框架图中,形成完整的知识系统图。

这种方法用在Direct3D的学习上,可以认为是:先理解游戏引擎这个系统框架图,然后,明了3D 图形子系统在游戏引擎中的位置。接着,在理解3D图形子系统(Direct3D)这个子系统框架图的基础上,明了Direct3D流水线,进一步针对Direct3D流水线包含的各个阶段(Stage),深入学习Direct3D API。在学习中,遇到函数、结构、常量可以自动地发现这些东西在Direct3D流水线中的哪个阶段被用到。按照这种方式进行学习,可以比较方便地把各个知识点有条理地拼缀起来,极大地提高学习效果。

-----

注:某日在网上看到一篇游戏程序员养成计划,写得细致全面,强烈推荐。地形渲染还有一本书《Focus On 3D Terrain 》,我建议学习地形渲染看这本书比较容易上手。本书网上有中文翻译(我建议别看,翻译得差)。所有书籍,都推荐直接看英文版的。

 

WinCapture: www.wincapture.com

WinCapture The most popular screen capture, video screen recording and image editing utility for Windows, with more than 9 million downloads.
Capture anything you see on your computer screen - images and text.

Easily record activity on your computer screen, audio and webcam video.

Edit your screen captures and images with drawing tools, annotations and stunning visual effects.

posted on 2010-07-27 11:35 wilyquan 阅读(936) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © wilyquan Powered by: 博客园 模板提供:沪江博客