您的位置:首页 >要闻 >

direct3d不可用怎么办(direct3d)

导读 大家好,我是小五,我来为大家解答以上问题。direct3d不可用怎么办,direct3d很多人还不知道,现在让我们一起来看看吧!和WQ谈起有关游戏开...

大家好,我是小五,我来为大家解答以上问题。direct3d不可用怎么办,direct3d很多人还不知道,现在让我们一起来看看吧!

和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.

本文到此讲解完毕了,希望对大家有帮助。

免责声明:本文由用户上传,如有侵权请联系删除!