3D编程:第一章 Introducing DirectX

DirectX是一组API的集合,用于在微软平台上,包括Windows,Windows Phone,Xbox 360,以及Xbox One,开发游戏或图形相关的应用程序。DirectX从1990年代中期发展至今,并处于现在图形开发的前沿。Direct3D是DirectX里面一套3D图形API,是这本书主要讲述的。DirectX也包含了2D图形,输入,音频,文字渲染和GPU编程的系统支持。本章概述了DirectX和DirectX 11的图形管线。

回顾历史

DirectX 1.0版本发布于1995年九月,刚好在Windows95发布之后。以前游戏主要在MS-DOS环境下开发。DirectX的发布是微软试图让游戏开发者转到新操作系统。DirectX的早期使用者很少有人转移到新的平台,DirectX库的快速发布使这种情况更加严重。2000年2月,微软已经开发了Directx的6个额外的主要版本,以及大量小的修改。但是Directx库的已经得到了稳定的提高,于是2001年微软发布了自己的第一款游戏主机,支持DirectX 8的修订。与些同时,DirectX已经获得了大量开发者的支持,微软一举成为游戏和图形领域的领导者。         在同一时期,3D图形硬件也处于类似的快速发展状态。在1990年代中期以前,低成本,面向消费者的3D图形硬件根本不存在。早期的3D显卡只提供固定功能的APIs-这种只针对特定显卡的特性不能被更改或者被图形开发者扩展。随着2001年Xbox,nVidia GeForce 3,DirectX 8的发布,开发者第一次被广泛介绍可编程shaders。可编程shaders使得开发者可以操作一个3D object,通过GPU(也被称为显卡)一个像素一个像素的计算输出。在DirectX 8的时候,shaders是用汇编语言编写的,但是到2002年,随着DirectX 9的发布,微软介绍了High-Level Shading Language(HLSL),一种用于编写shaders的C风格编程语言。         2005年11月,微软推出了Xbox 360,并保证服务一直持续到2013年11月的(这是游戏主机推出以来最长的主机服务周期)。Xbox 360使用了DirectX 9。一年后,在2006年11月,微软发布了Windows Vista和DirectX 10。然而在此期间,游戏主机占领了视频游戏市场,而且Xbox 360仅支持DirectX 9。因此,很少有开发者使用DirectX 10,而且那些使用DirectX 10的开发者也受限于PC平台的DirectX 10特性。其他抑制DirectX  10被大规模使用的因素是DirectX9和DirectX10之间的重大改变,以及Windows Vista只被少数人使用。 2009年推出了Windows 7,并且很快就发布了DirectX 11。这次发布相对DirectX 10只有一点小的改变(与早期更新迭代相比算是比较小的改变)。DirectX 11介绍了DirectCompute,通用GPU编程API,Tessellation支持,以及改进了Multithreading。在这段时间,PC平台的游戏市场开始复苏变得爱欢迎,一部分是因为像Valve的Stream数字发行平台,另一部分是因为游戏主机已经开始过时了。这些因素导致越来越多的开发人员开始采用DirectX 11。然后在2012年秋天,微软发布了Windows 8和Windows Phone 8,还有DirectX 11.1。这也是本书重点讲述的版本,而且微软最近大多数平台,包括最新的Xbox One都支持。         仅管就是一本关于DirectX的书籍,但如果我不提及OpenGL(同时期非常有竞争力的图形库),我被会认为不尽责。OpenGL是Silicon Graphics Inc. (公司)于1991年发布的一个跨平台渲染API。编写这本书的时候,OpenGL最新的版本是4.4版(于2013年7月发布),并由Kronos Group管理。仅管OpenGL和DirectX在设计架构上显著不同,但他们如今都支持相同的渲染能力。因此,如何选择DirectX或者OpenGL对于平台是一个大问题。DirectX主要针对微软平台,由于显卡厂商广泛支持,使得微软的Windows操作系统成为了桌面电脑上的主导。而OpenGL,并不针对某一特写平台,被移动开发领域大量采用。 至此,回顾完历史,我们开始学习下面的内容。

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/extra/

时间: 2024-08-07 22:01:56

3D编程:第一章 Introducing DirectX的相关文章

《.net编程先锋C#》第一章 C#简介(转)

编程 第一章 C# 简介 欢迎您加入C#的世界! 这一章将把您引进C#的天地,并回答一些相关的问题,如:您为什么要使用C#,C++和C#的主要有什么不同点,以及为什么C#使开发更容易而且还使您感到很有趣.为什么是另外一种编程语言? 必须回答的一个问题:当您已经使用C++或VB从事企业开发时,为什么还要学习另一种语言? 市场式的回答就是:"在企业计算领域,C#将会变成为用于编写"下一代窗口服务"(Next Generation Windows Services,简写为NGWS

《.net编程先锋C#》第一章 C#简介

编程 第一章 C# 简介 欢迎您加入C#的世界! 这一章将把您引进C#的天地,并回答一些相关的问题,如:您为什么要使用C#,C++和C#的主要有什么不同点,以及为什么C#使开发更容易而且还使您感到很有趣.为什么是另外一种编程语言? 必须回答的一个问题:当您已经使用C++或VB从事企业开发时,为什么还要学习另一种语言? 市场式的回答就是:"在企业计算领域,C#将会变成为用于编写"下一代窗口服务"(Next Generation Windows Services,简写为NGWS

3D编程:第五章 Texture Mapping

第五章 Texture Mapping 纹理映射就是在3D object表面添加细节的过程.可以比喻成包装礼品的过程,包装纸就是一种2D纹理.纹理映射是现代渲染的基础,并用于多种有趣的图形技术中. An Introduction to Texture Mapping 相比如上一章使用HelloShaders和HelloShaders effects产生的纯色效果,通常情况你会期望在3D objects中渲染更多的细节.正如之前所讲的,3D模型由vertices组成,并组织成三角形,这些verti

3D编程:Real-Time 3D Rendering with DirectX and HLSL

介绍 图形编程是视频游戏,电影和科学模拟仿真背后的魔法.你在计算机屏幕上看到的每一个爆炸,颗粒以及眩光都是使用视频卡处理的.此外,你看到的每一个像素点都是通过GPU渲染和图形编程人员软件实现的,因为现代操作系统使用GPU绘制.这是一个广泛的话题,但一直以来只属于少数领域.甚至有经验的软件开发人员,通常认为渲染是一门高深的艺术,充满了复杂的数学工具和深奥的工具.另外,现代图形学的快速发展使得图形编程变成了不断前进的目标,同时建立一个起点变得更加困难. 这就是这本书的目的.通过这本书,你会学习对实时

《OpenGL超级宝典(第5版)》——第1章,第1.4节3D编程的基本原则

1.4 3D编程的基本原则 现在,我们对实时3D的基本概念已经有了相当程度的认识.我们讨论了一些术语以及PC上的一些示例应用程序.那么,如何在自己的计算机上创建这样的图像呢?好吧,这正是本书剩余部分的任务所在.不过,读者还需要知道一些基础知识,这正是我们接下来将要讨论的. 1.4.1 并非工具包 OpenGL基本上是一种底层渲染API(应用程序接口).我们不能告诉它"在什么地方绘制什么"--我们需要自己动手,通过载入三角形,应用必要的变换和正确的纹理.着色器并在必要时应用混合模式来组合

Pro JavaScript Techniques第一章: 现代javscript编程

 标题: Pro JavaScript Techniques第一章: 现代javscript编程 mozart0 [楼主] 匪徒田老大 版主 帖子 2326体力 6628 威望 177 注册 2003-6-18 #1 发表于 2007-4-4 10:46  资料  短消息  加为好友  Pro Javascript Techniques翻译连载:说明和目录 JavaScript的演化是渐进而稳固的.历经过去十年的进程,JavaScript在人们的认知里已经从一门简单的玩物式的语言逐渐发展成为一门

《指针的编程艺术(第二版)》一第一章 内存的基本概念1.1 变量

第一章 内存的基本概念 指针的编程艺术(第二版)1-1 变量 1-2 一维数组 1-3 二维数组 1-4 结构 1-5 练习 当程序定义一个变量时,编译程序根据其数据类型分配适当大小的内存给它,以便存储数据.这就如同地址一般,邮差根据收件人的地址,将信件投入正确的信箱. 1.1 变量 指针的编程艺术(第二版)程序以变量名称代表某一事项,就好比每一个人都有姓名一般.如果有人喊"蔡明志",那我一定会说"到",因为这个名字就代表我的意思.我们就从变量开始谈起.请参阅范例a

《C++编程剖析:问题、方案和设计准则》——第一章泛型编程与C++标准库1.1:vector的使用

第一章泛型编程与C++标准库 C++编程剖析:问题.方案和设计准则C++最强大的特性之一就是对泛型编程的支持.C++标准库的高度灵活性就是明证,尤其是标准库中的容器.迭代器以及算法部分(最初也称为STL). 与我的另一本书More Exceptional C++ [Sutter02]一样,本书的开头几条也是介绍STL中一些我们平常熟悉的部件,如vector和string,另外也介绍了一些不那么常见的设施.例如,在使用最基本的容器vector时如何避免常见的陷阱?如何在C++中进行常见的C风格字符

《C++编程规范:101条规则、准则与最佳实践》——第一章组织和策略问题1.1不要拘泥于小节 (又名:了解哪些东西不应该标准化)

第一章组织和策略问题 C++编程规范:101条规则.准则与最佳实践如果人们按照程序员编程的方式修建房屋,那么一只啄木鸟就能毁灭整个文明. --Gerald Weinberg[1] 为了遵从C和C++的伟大传统,我们从0开始编号.首要的指导原则,也就是第0条,阐明了我们认为对编程规范而言最为基本的建议. 接下来,这个导论性部分的其他条款将主要讲述几个精心选择的基本问题,这些问题大多数与代码本身并没有直接关系,它们讨论的是编写坚实代码所必需的工具和技术. 本部分中我们选出的最有价值条款是第0条:"不