【DirectX11】第一篇 DirectX11简介

本系列主要翻译和参考《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并不只针对任何平台的灵活性使得其在手机开发市场很受欢迎。
时间: 2024-11-09 12:08:12

【DirectX11】第一篇 DirectX11简介的相关文章

JavaMail入门第一篇 邮件简介及API概述

现如今,电子邮件在我们的生活当中扮演着越来越重要的角色,我们每个人几乎都会与其打交道(至少时不时我们都会接收到莫名其妙的垃圾邮件),在工作中,使用邮件进行交流沟通,可以使我们的工作有迹可循,也显的较为正式,这是由我们人为手工操作的,在生活中,在某网站注册了一个账户之后,该网站就会自动发送一封欢迎邮件并让我们确认是否注册,以防止恶意注册,当然,这个就不可能像我们工作中手工方式来进行操作了,Java的13种核心技术中的JavaMail为我们提供了API来对邮件进行相关的操作. 一.邮件服务器 要在I

python学习之旅【第一篇】简介和入门

python简介: 一.什么是python pythonde 设计哲学是:“优雅”.“明确”.“简单” 二.python由来  1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.之所以选中Python作为程序的名字,是因为他是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python‘s Flying Circus)的爱好者. 三.Python能做什么 Web程序 Python经常被用于Web开发.比如,通过mod_ws

【ABAP系列】SAP ABAP7.40新语法简介第一篇

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP7.40新语法简介第一篇 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 SAP的系统不断的更新 7.40已经出来很久了,一直忙着没有更新7.40新语法内容 慢慢写点新语法的相关内容 首先说一下7.40的特点及简介 1.ABAP 7.40是AS ABAP 7.31(也称为ABAP 7.

第一篇 Replication:复制简介

本篇文章是SQL Server Replication系列的第一篇,详细内容请参考原文. 复制这个词来自拉丁语中的"replicare",意味着重复.Replication describes the process of reproducing or duplicating.Replication in SQL Server does exactly that;it reproduces or duplicates data.任何时候,你需要创建一个数据的副本,或重现该数据的变化,复

jstl标签 core fmt fn函数使用参考(为第一篇的补充,更为实用)

JSTL标签 参考手册 前言 ========================================================================= JSTL标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实. JSTL全名为JavaServer Pages Standard Tag Library,目前最新的版本为1.1版.JSTL是由J

python第一篇

python第一篇 1.python简介 python是一门简单易学而且功能强大的编程语言,它有高效的内置数据结构,并且能够用简洁的语法进行面向对象编程.python简洁的语法和良好的编译解释性,使得它能够成为大多数领域的使用语言,如web开发,科学运算,人工智能,系统运维,金融分析,图形GUI等,很多领域都可以看到python的影子.既然python这么厉害,那为什么不学起来呢?come body!  life is short ,you need python! 2.基本数据类型 首先介绍的

The Internet Communications Engine (Ice) 跨平台异构通讯方案 第一弹-ICE简介

.net中的通讯方案很多,从.net Remoting,MSMQ,Webservice,WSE,WCF等等,他们都有一个特点,易用,但是都不能跨语种异构,如果你服务端要用java开发,客户端用C#开发,或者其它语言譬如C++, Python,PHP, Ruby, Objective-C,等等,那么.net提供的解决方案将不再有效.现在,隆重推出跨平台异构方案ICE.ICE官网:http://www.zeroc.com/ice.html 简介:The Internet Communications

基于C# Winform的简易聊天程序[第一篇-两端通信]

程序简介 本聊天程序支持局域网内部客户端与服务端之间的互相通信. 原理 启动服务端后,服务端通过持续监听客户端发来的请求,一旦监听到客户端传来的信息后,两端便可以互发信息了.服务端需要绑定一个IP,用于客户端在网络中寻找并建立连接.信息发送原理:将手动输入字符串信息转换成机器可以识别的字节数组,然后调用套接字的Send()方法将字节数组发送出去.信息接收原理:调用套接字的Receive()方法,获取对端传来的字节数组,然后将其转换成人可以读懂的字符串信息. 界面设计 - 服务端 IP文本框 na

Golang学习-第一篇 Golang的简单介绍及Windows环境下安装、部署

序言 这是本人博客园第一篇文章,写的不到位之处,希望各位看客们谅解. 本人一直从事.NET的开发工作,最近在学习Golang,所以想着之前学习的过程中都没怎么好好的将学习过程记录下来.深感惋惜! 现在将Golang的学习点滴记录分享,废话到此,下面进入正文. 注:此文及以后所有内容中的开发平台为:Windows 开发工具为:JetBrains Gogland x64版本 官方下载地址为:https://www.jetbrains.com/go/download/#section=windows