DirectX
DirectX(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口,是一种应用程序接口(API)。DirectX可以让以windows为平台的游戏或多媒体程序获得更高的执行效率,加强3D图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。Microsoft DirectX 是这样一组技术:它们旨在使基于Windows 的计算机成为运行和显示具有丰富多媒体元素(例如全色图形、视频、3D 动画和丰富音频)的应用程序的理想平台。DirectX 包括安全和性能更新程序,以及许多涵盖所有技术的新功能。应用程序可以通过使用DirectX API 来访问这些新功能。 它比Windows GDI要快好几倍,可用于不同的语言和多种平台,支持从绘制象素到高级3D图象,从播放简单声音到数字音乐,从键盘控制到反震手柄……它给你游戏编程所需的一切(有点夸张) DirectX 显示部分(也是最重要的部分),分为DrictDraw(DDraw)和Dricet3D(D3D),其中DrictDraw主要是负责2D图像加速,包括播放mpg、DVD看图片、2D小游戏等等( 把它理解成所有划线的部分都是用的DDraw );Dricet3D主要负责3D的效果,包括点线面体渲染等等;
DricetX 包含的:
* DirectSound:提供硬件和软件的声音混合与回放。
* DirectMusic:处理基于消息的音乐数据。它支持乐器数字接口(MIDI)并为创建交互式音乐提供创作工具。
* DirectPlay:使得通过调制解调器链接或通过网络来与应用程序相连成为可能。
* Direct3D:是一个三维图形包,它提供一个高级的保留模式(Retained Mode)接口,这使得你能够实现一个完整的三维图形系统。它还包含一个低级的即时模式(Immediate Mode)接口,使得应用程序获得对渲染管线的完全控制。
* DrictDraw:负责图像显示中的2D加速,常常在播放,图片界面等等;
* DirectInput:为包括游戏杆、鼠标、键盘和游戏控制器在内的输入设备提供支持。它还为反馈游戏设备提供支持。
* DirectSetup:为DirectX提供了一个简单的安装过程。它简化了更新显示和音频驱动程序的过程,并且确保没有硬件或软件冲突的存在。
* AutoPlay:让你能够制作一张一旦插入驱动器就能自动安装的光盘。AutoPlay并非DirectX所独有,因为它是Microsoft Win32 API的一部分。
现代的DirectX主要是在2D 3D应用是最多做重要:
**
Direct9:
现今主要是在DirectX9,是与之前跨时代并且影响到现在的版本之后 ,DirectX9显著的提高了老本(DirectX8)的VS性能,新的控制指令,可以用通用的程序权代替以前专用的单独着色程序,效率提高许多倍;增加循环操作指令,减少工作时间,提高处理效率;扩展着色指令个数,从128个提升到256个。 增加对浮点数据的处理功能,以前只能对整数进行处理,这样提高渲染精度,使最终处理的色彩格式达到电影级别。突破了以前限制PC图形图象质量在数学上的精度障碍,它的每条渲染流水线都升级为128位浮点颜色,让游戏程序设计师们更容易更轻松的创造出更漂亮的效果,让程序员编程更容易。
Direct10:
DX10又是一次大革命,除了将ShaderModel从3.0升级至4.0版本外,还有两项非常重要技术:
第一:引入统一渲染架构,从此不再区分像素与顶点着色单元,而是由流处理器单元按照负载动态的执行包括像素和顶点在内的各种着色指令:
第二,引入全新的几何着色单元,它第一次允许由GPU来动态的生成和销毁几何图元数据,使GPU可以在不用CPU干涉的条件下进行反复运算,许多以前无法实时使用的算法现在都可以在GPU中使用了。
第三,最大的结构性变化就是在几何处理阶段增加了几何渲染单元(Geometry
Shader)。几何渲染单元被附加在顶点渲染单元之后,但它并不像顶点渲染单元那样输出一个个顶点,而是以图元作为处理对象。
Direct11:
DX9C和DX10听起来非常完美,但也有明显的缺点,就是系统资源开销很大,运算效率比较低,所以DX11的重点就落在了改进渲染效能方面。
多线程 多线程 资源/着色器/对象创建 多线程显示队列创建
着色器特性 可寻址资源——纹理、常量缓冲区和采样器 其他资源类型,如读/写缓冲区和纹理
子程序
计算着色器-----一种着色器,设计用于加速计算,通过在几个软件线程或线程组之间划分问题空间,并在着色器寄存器之间共享数据,以显著减少输入着色器所需的数据量,可以显著加快计算速度。计算着色器可以显著改进的算法包括后处理、动画、物理和人工智能几何着色器 实例化----允许几何体着色器输出最多1024个顶点,或者实例和最多1024个顶点的任意组合(每个顶点最多32个实例)。
像素着色器 覆盖范围作为PS输入 可编程插值输入-能够评估像素内的属性,在任何地方的多采样网格
DirectX 12:
微软在 GDC DirectX 的直播活动中公开了 DirectX 12 Ultimate(DX12U)标准,统一了AMD 和 NVIDIA 两大显卡巨头的图形 API 标准, RTX 系列和 RDNA2 系列显卡均支持 DX12U。
DX12U 带来了以下新特性:
- DirectX Raytracing 光线追踪
- Variable Rate Shading 可变频率着色
- Mesh Shaders 网格着色
- Sampler Feedback 采样器反馈
一次开发,全面优化,A 卡、N 卡、Xbox Series X 通吃,.对开发者来说这当然是巨大的利好消息。