在最近学习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】第一篇 DirectX11简介相关推荐

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

    python简介: 一.什么是python pythonde 设计哲学是:"优雅"."明确"."简单" 二.python由来  1989年的 ...

  2. SAP MM零基础学习-第一篇-模块简介

    MM物料管理是SAP R/3系统的一个模块,SAP在标准软件系统市场中处于领先地位.由于使用先进的开发技术,SAP能够为业务的各个方面提供数据处理的解决方案.物料管理模块支持日常发生的业务处理功能和过 ...

  3. Python之路【第一篇】:Python简介和入门

    Python之路[第一篇]:Python简介和入门 Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗 ...

  4. 第一篇综述-无人车简介(二)

    第一篇综述-无人车简介(一) 目录 正面影响 巨大经济效益 增加驾驶安全 缓解交通拥堵 降低环境污染 负面影响 大量人员失业 泄露隐私 公共安全威胁 面临的挑战 伦理道德 责任归属 技术障碍 正面影响 ...

  5. 第一篇综述-无人车简介(一)

    第一篇综述-无人车简介(二) 目录 定义及分级 发展历程 定义及分级 无人车(driverless car)又称自主车或自动驾驶车,是一种无须人工干预而能够感知其周边环境和导航的车辆.它利用了包括雷达 ...

  6. <Android开发> Android vold - 第一篇 vold前言简介

    本系列主要介绍 Android vold,分为以下篇章 <Android开发> Android vold - 第一篇 vold前言简介 <Android开发> Android ...

  7. Webpack系列-第一篇基础杂记

    系列文章 Webpack系列-第一篇基础杂记 Webpack系列-第二篇插件机制杂记 Webpack系列-第三篇流程杂记 前言 公司的前端项目基本都是用Webpack来做工程化的,而Webpack虽然 ...

  8. 微信公众号开发入门教程第一篇

    微信公众号开发入门教程第一篇 关键字:微信公众平台开发 作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/ ...

  9. FIR_01 基于FPGA的FIR滤波器 (FDATOOL ISE ) 第一篇:初步认识和应用

    1 简介 对于FIR滤波器的理论部分,在本系列博客中不做论述,或许在后续更新的文章中会对其理论进行讨论. 本文为该系列博客的第一篇文章,将以最简单直观的方式让初学者体会到FIR滤波器的作用,采用最傻瓜 ...

最新文章

  1. 代码质量第4层——健壮的代码!
  2. web端ios布局fixed元素软键盘唤起时fixed失效
  3. Pandas数据探索分析,分享两个神器!
  4. 自我总结和学习表单提交的几种方式 (一)
  5. C语言代码规范(七)#define
  6. 设计OA系统的用户-角色-权限分配
  7. jsp15公安海警学院值班管理系统(jsp+servlet+mysql)
  8. 如何写好一篇技术型文档?
  9. android 让应用恢复前台显示_Android将后台应用唤起到前台的方法
  10. 内核下断链隐藏进程(兼容多版本Windows系统,非硬编码)
  11. pybind11学习笔记
  12. P2617 Dynamic Rankings(带修改主席树)
  13. 小程序源码:网课查题微信小程序源码下载,题库资源丰富自动采集,支持语音拍照识别
  14. Java回炉学习(七)
  15. C#:CAN通讯上位机的简单示例Ⅱ
  16. hcia是什么等级的证书_HCIA是什么等级的证书
  17. html怎样给名片加边框,添加边框和底纹
  18. C#实现扫脸登陆 ---百度API
  19. ubuntu16.04安装kinetic ROS记录
  20. 如何真机调试微信h5页面

热门文章

  1. 一张壁纸使 Android 手机集体变砖,目前尚无解决方法
  2. 200+篇Graph4NLP文献集:图深度学习在NLP任务的应用
  3. linux下的压缩工具下载,linux 各压缩工具
  4. 赴台旅学前奏~台湾旅游知识普及篇
  5. ABB助力国网冀北电力打造虚拟电厂
  6. c++的几个刷题网站(不只有c++)
  7. CentOS安装配置DNSMasq
  8. 任鸟飞FPS类型游戏绘制和游戏安全,反外挂研究(一)
  9. python创建一个列表、包括学生姓名年龄祖籍_Python列表(list)练习题
  10. Python【queue】