【DirectX11】第一篇 DirectX11简介

在最近学习DirectX11的过程中发现龙书11中一部分内容由于工具库更新的问题,已经不再适用。在查找资料后发现另一本好书《Real-Time 3D Rendering with DirectX and HLSL》,这本书中的内容基本和现版本的DirectX11所使用的包括IDE和编译库相关内容保持同步,并且更多的介绍了3D渲染的相关知识和shader的编写,于是决定基于此书,在学习的过程中也会不断整理和拓展相关知识,以此开始了这个系列的文章。
本系列文章主要翻译和参考自《Real-Time 3D Rendering with DirectX and HLSL》一书(感谢原书作者),同时会加上一点个人理解和拓展,文章中如有错误,欢迎指正。
这里是书中的代码和资源。

关于DirectX

DirectX是一系列用来在微软提供的众多平台上开发游戏或图形应用的API接口,这些平台包括有Windows,Windows Phone,Xbox360以及最新的Xbox One。从上世纪末开始,DirectX已经发展并一直作为现代图形编程领域的领导者之一存在。DirectX3D作为DirectX中的3D图形接口,也是本书的重点研究对象。DirectX中同时也包括2D图形,输入,音频,文本渲染以及多目标GPU编程。本书将提供关于DirectX和DirectX11图形渲染管线方面的介绍。

DirectX发展史

DirectX 1.0版本于1995年9月发布,紧紧跟随于Windows95之后。显然,在那之前游戏都是在MS-DOS上开发出来的。微软的这次发布使得游戏开发者得以有机会在全新的操作系统上进行尝试。一小部分DirectX的使用者开始推进这项技术,这使得DirectX的开发库得以飞速发展。到2000年2月份的时候,微软已经推出了DirectX的6个大版本和很多小版本。DirectX就这样一直处于稳步发展中,在2001年,微软发布了DirectX的第一个游戏平台Xbox,这是一台支持DirectX8版的硬件平台。到那时,DirectX已经拥有了一大批强有力的开发者,这也使得微软确立了游戏图形开发领域的领导者地位。
同期,3D图形硬件也在以一个近似飞快的速度发展。试想一下,在上世纪末期,低成本面向普通用户的3D图形硬件还不存在。早期的图形显卡只提供各显卡独立的指定接口集合,既不能被开发者修改也不能扩展。直到2001年Xbox,nVidia GeForce 3以及DirectX8的发布,才使开发者们首次有机会接触到可编程着色器。可编程Shader让开发者们能够在3D模型在传送到GPU(或者说图形显卡)中时对其进行操控,并且以逐像素的方式定义其输出数据。在DirectX8编程环境中,shader的编写还需要用到汇编语言,而到了2002年,随着DirectX9的发布,微软推出了High-Level Shading Language,也就是现在非常有名的HLSL,一种类似C语言的编程语言。
2005年11月,微软推出了Xbox 360,这个游戏平台一直持续到2013年11月份(这也是迄今为止自引入游戏平台后最长的生存周期)。Xbox 360中使用了DirectX9技术。一年以后,微软于2006年11月份发布了Windows Vista以及DirectX10新特性。但多方面的原因压制了DirectX10的大规模使用,包括DirectX9和DirectX10之间的大量改动以及Windows Vista系统的低使用率。 2009年7月,Windows 7系统发布,随后DirectX11也相继发布。相比早起的版本迭代,这次发布相对于DirectX10仅做了很小的改动。DirectX11引入了并行计算,GPGPU编程接口,细分曲面支持并且提升了多线程计算。在这之后,PC游戏市场又迎来了新的热潮,一部分原因应归于像Valve’s Steam这样的游戏分发平台,另一部分原因也可能是游戏控制平台(如Xobx360的老化)。当然也应归功于日益增长的新接口开发者军队的增长。之后,直到2012年秋天,微软发布了Windows 8、Windows Phone 8以及DirextX11.1。DirextX11.1将是本书主要关注的版本,并且微软近期推出的包括Xbox One等的游戏平台也都支持这一版本。
虽然本书主要是讲关于DirextX的,但仍然不敢忽视OpenGL,这是一个与DirextX发展期内同样茁壮成长的开发库。OpenGl是一个款平台的渲染接口,于1991年第一次发布。在本书编写的过程中,OpenGL的最新版本是4.4(2013年七月发布),Kronos Group负责管理该API接口。虽然这两个渲染接口在设计方面有很大的不同,但他们都支持同样的渲染能力。因此,DirectX和OpenGl的选择和平台的选择密切相关。DirectX只针对微软发布的平台,并且大部分图卡厂商都支持这一接口,这也是由于微软操作系统在桌面电脑操作系统市场占有的霸主地位。而另一方面OpenGL并不只针对任何平台的灵活性使得其在手机开发市场很受欢迎。

你可能感兴趣的:(directx11,3D实时渲染)