热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

显卡DirectX技术发展详解

DirectX是一种应用程序接口(API)是计算机计算图形的一种规则,相当于一个通用编译器。DirectX并不是一个单纯的图形API&#x
DirectX是一种应用程序接口(API)是计算机计算图形的一种规则,相当于一个通用编译器。

    DirectX并不是一个单纯的图形API,它是由微软公司开发的用途广泛的API,它包含有Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多个组件,它提供了一整套的多媒体接口方案。只是其在3D图形方面的优秀表现,让它的其它方面显得暗淡无光。



DirectX 1.0

     第一代的DirectX很不成功,推出时众多的硬件均不支持,当时基本都采用专业图形API-OpenGL,缺乏硬件的支持成了其流行的最大障碍。
    DirectX 1.0版本是第一个可以直接对硬件信息进行读取的程序。它提供了更为直接的读取图形硬件的性能(比如:显示卡上的块移动功能)以及基本的声音和输入设备功能(函数),使开发的游戏能实现对二维(2D)图像进行加速。这时候的DirectX不包括现在所有的3D功能,还处于一个初级阶段。



DirectX 2.0

     DirectX 2.0在二维图形方面做了些改进,增加了一些动态效果,采用了Direct 3D的技术。这样DirectX 2.0与DirectX 1.0有了相当大的不同。在DirectX 2.0中,采用了“平滑模拟和RGB模拟”两种模拟方式对三维(3D)图像进行加速计算的。DirectX 2.0同时也采用了更加友好的用户设置程序并更正了应用程序接口的许多问题。从DirectX 2.0开始,整个DirectX的设计架构雏形就已基本完成。



DirectX 3.0

     DirectX 3.0的推出是在1997年最后一个版本的Windows95发布后不久,此时3D游戏开始深入人心,DirectX也逐渐得到软硬件厂商的认可。97年时应用程序接口标准共有三个,分别是专业的OpenGL接口,微软的DirectX D接口和3DFX公司的Glide接口。而那时的3DFX公司是最为强大的显卡制造商,它的Glide接口自然也受到最广泛的应用,但随着3DFX公司的没落,Voodoo显卡的衰败,Glide接口才逐渐消失了。
    DirectX 3.0是DirectX 2.0的简单升级版,它对DirectX 2.0的改动并不多。包括对DirectSound(针对3D声音功能)和DirectPlay(针对游戏/网络)的一些修改和升级。DirectX 3.0集成了较简单的3D效果,还不是很成熟。



DirectX 5.0

     微软公司并没有推出DirectX 4.0,而是直接推出了DirectX 5.0。此版本对Direct3D做出了很大的改动,加入了雾化效果、Alpha混合等3D特效,使3D游戏中的空间感和真实感得以增强,还加入了S3的纹理压缩技术。
    同时,DirectX 5.0在其它各组件方面也有加强,在声卡、游戏控制器方面均做了改进,支持了更多的设备。因此,DirectX发展到DirectX 5.0才真正走向了成熟。此时的DirectX性能完全不逊色于其它3D API,而且大有后来居上之势。



DirectX 6.0

     DirectX 6.0推出时,其最大的竞争对手之一Glide,已逐步走向了没落,而DirectX则得到了大多数厂商的认可。DirectX 6.0中加入了双线性过滤、三线性过滤等优化3D图像质量的技术,游戏中的3D技术逐渐走入成熟阶段。

 

DirectX 7.0特性:硬件T&L

    在DirectX 5.0以前,这个被微软整合在Windows操作系统内部的图形API并没有现在这么风光,当时的显卡和游戏都以支持OpenGL和Glide(3DFX的专用API)为荣,DirectX在持续不断的改进与发展,但始终都没能超越对手,一方面基于DOS系统的Windows还不够强大,另一方面微软的影响力还没到左右游戏开发商和芯片厂商的地步。

    直到Windows 95发布之后,全新的图形界面让整个业界都兴奋不已,90%的占有率直接带动了整个行业的需求,也迫使全球软硬件厂商都不得不向其靠拢。此时整合 Win95整合的DirectX 6.0也有了足够的实力与OpenGL/Glide分庭抗力,在技术特性不输与人的情况下,DirectX的影响力与日剧增。

     ● DirectX 7.0确定权威:核心技术T&L

    DirectX 7.0是一次革命性的改进,其最大的特色就是支持Transform & Lighting(T&L,坐标转换和光源)。

回顾历史展望未来!DX11架构深度解析

    3D游戏中的任何一个物体都有一个坐标,当此物体运动时,它的坐标发生变化,这指的就是坐标转换;3D游戏中除了场景+物体还需要灯光,没有灯光就没有3D物体的表现,无论是实时3D游戏还是3D影像渲染,加上灯光的3D渲染是最消耗资源的。

历代显卡精彩演示DEMO赏析点评之NV篇    历代显卡精彩演示DEMO赏析点评之NV篇

基于T&L技术的演示Demo

    在T&L问世之前,位置转换和灯光都需要CPU来计算,CPU速度越快,游戏表现越流畅。使用了T&L功能后,这两种效果的计算用显卡核心来计算,这样就可以把CPU从繁忙的劳动中解脱出来,让CPU做他该作的事情,比如逻辑运算、数据计算等等。换句话说,DX7显卡用T&L渲染游戏时,即使没有高速的CPU,同样能能流畅的跑3D游戏。

 

DirectX 8.0特性:像素和顶点管线

    ● DirectX 8.0:引入像素和顶点两大渲染管线

    面向图形计算,让GPU逐渐找到了自己的方向,那就是给予用户更真更快地视觉体验,但是GPU架构也遇到一些问题亟待解决。首要问题就是,要实现更加复杂 多变的图形效果,不能仅仅依赖三角形生成和固定光影转换,虽然当时游戏画面的提高基本上都是通过大量的多边形、更复杂的贴图来实现的。

    但后期的发展中,顶点和像素运算的需求量猛增。每个顶点都包含许多信息,比顶点上的纹理信息,散光和映射光源下表现的颜色,所以在生成多边形的时候带上这些附加运算,就可以带来更多的效果,但这也更加考验顶点和像素计算能力。

回顾历史展望未来!DX11架构深度解析

    2001年微软发布了DirectX 8.0,一场新的显卡革 命开始,它首次引入了ShaderModel的概念,ShaderModel就相当于是GPU的图形渲染指令集。其中像素渲染引擎(Pixel Shader)与顶点渲染引擎(Vertex Shader)都是ShaderModel 1.0的一部分,此后每逢DirectX有重大版本更新时,ShaderModel也会相应的升级版本,技术特性都会大大增强。

    与DX7引入硬件T&L仅仅实现的固定光影转换相比,VS和PS单元的灵活性更大,它使GPU真正成为了可编程的处理器,时至今日DX11时代ShaderModel都在不停地更新,以便渲染出更逼真更完美的画面。这意味着程序员可通过它们实现3D场景构建的难度大大降低,但在当时来说可编程性还是很弱,GPU的这一特性还是太超前了。

历代显卡精彩演示DEMO赏析点评之NV篇   历代显卡精彩演示DEMO赏析点评之NV篇   历代显卡精彩演示DEMO赏析点评之NV篇

历代显卡精彩演示DEMO赏析点评之NV篇   历代显卡精彩演示DEMO赏析点评之NV篇   历代显卡精彩演示DEMO赏析点评之NV篇

DX8动态光影效果展示:变色龙和不同角度的人脸

    DirectX 8.0当中的Pixel Shader和Vertex Shader的引入,使得GPU在硬件逻辑上真正支持像素和顶点的可编程,反映在特效上就是动态光影效果,当时波光粼粼的水面都是第一次展现在玩家面前。

    但是DX8的普及之路并不顺畅,主要是因为当时的DX8显卡都定位太高,NVIDIA和ATI双方都没有推出过低端DX8显卡,热卖的产品都是DX7,直到DX9诞生之后,双方才把昔日高端的DX8显卡当作低端产品处理。

 

 

DirectX 9.0特性:高精度渲染

    ● DirectX 9.0:高精度渲染时代来临

    2002年底,微软发布DirectX 9.0,如果从技术规格上看,DX9似乎没有DX7和DX8那种让人眼前一亮的革命性技术,它只是将ShaderModel版本从1.0升级到2.0而 已。其实不然,此次ShaderModel指令集的改进让图形渲染画质提高到了新的水平。

回顾历史展望未来!DX11架构深度解析

    首先,PixelShader 2.0具备完全可编程架构,能对纹理效果即时演算、动态纹理贴图,还不占用显存,理论上对材质贴图的分辨率的精度提高无限多;另外PS1.4只能支持28 个硬件指令,同时操作6个材质,而PS2.0却可以支持160个硬件指令,同时操作16个材质数量,新的高精度浮点数据规格可以使用多重纹理贴图,可操作 的指令数可以任意长,电影级别的显示效果轻而易举的实现。

回顾历史展望未来!DX11架构深度解析

3DMark03中的最后一个场景就是DX9渲染,让人眼前一亮

    其次,VertexShader 2.0通过增加顶点指令的灵活性,显著的提高了老版本的顶点性能,新的控制指令,可以用通用的程序代替以前专用的单独着色程序,效率提高许多倍;增加循环 操作指令,减少工作时间,提高处理效率;扩展着色指令个数,从128个提升到256个。

历代显卡精彩演示DEMO赏析点评 ATI篇

Radeon 9700所提供的HDR Demo

    另外,增加对浮点数据的处理功能,以前只能对整数进行处理,这样提高渲染精度,使最终处理的色彩格式达到电影级别。突破了以前限制PC图形图象质量在数学上的精度障碍,它的每条渲染流水线都升级为128位浮点颜色,让游戏程序设计师们更容易更轻松的创造出更漂亮的效果,让程序员编程更容易。

 

 

 

DirectX 9.0c特性:震古烁今的HDR

    这是DirectX历史上唯一一次半代更新就引起渲染大波的版本,DirectX 9.0c,大名鼎鼎的HDR技术诞生。

       ● DirectX 9.0c:无与伦比的光影渲染

    DX9也是一次革命性的改进,但由于没有代表性的关键技术,以至于被广大用户所忽视,其实ShaderModel从1.0升级到2.0给图像渲染品质带来 了巨大的提升。DX9的第三个版本DX9C则更进一步,将ShaderModel从2.0升级至3.0,这一次又能带来什么呢?

    ShaderModel 3.0除了继续扩展指令长度之外,还提升了指令执行能力,它开始支持动态分支操作,像素程序开始支持分支操作(包括循环、if/else等),支持函数调 用。因此DX9C和SM3.0标准的推出,可以说是DirectX发展历程中的重要转折点。

    SM3.0除了取消指令数限制和加入位移贴图等新特性之外,更多的特性都是在解决游戏的执行效率和品质上下功夫,SM3.0诞生之后,人们对待游戏的态度也开始从过去单纯地追求速度,转变到游戏画质和运行速度两者兼顾。因此SM3.0对游戏产业的影响可谓深远。

回顾历史展望未来!DX11架构深度解析

    以上诸多改进相信很多人都不关心也不想知道,绝大多数人记住的只有一个,那就是只有DX9C显卡才支持HDR技术,因为HDR所带来华丽的光影效果给所有人都留下了深刻的印象,那种从暗淡无光到流光溢彩的美好回忆,可以说是前无古人后无来者的!

    HDR的全称是High Dynamic Range,即高动态范围,是一种色彩存储方式,在游戏用于存储渲染和光照数据。HDR渲染可以用4句话来概括:1.亮的地方很亮;2.暗的地方很 暗;3.亮暗部的细节非常非常明显;4.所有光照为实时计算生成,可模拟人眼视网膜动态改变明暗细节。

为王位而生 GeForce8800全面解析测试
HDR(高动态范围)渲染

    在DX9C之前,HDR已经得到了广泛应用,一般有FP16 HDR(半精度浮点型)和INT32 HDR(整数型),但效果都不如人意,FP16的动态范围不够大,而IN32的效率很低,因此这些HDR格式并未带来震撼效果。而FP32 HDR(32bit浮点格式)的诞生则大大拓展了明暗度扩展空间,使得游戏的光影效果有了质的提升,当年的《细胞分裂》、《FarCry》、 《3DMark06》等一系列游戏开启HDR后的画面让人惊讶不已!

 

 

DirectX 10特性:统一渲染和几何着色

    以往的DirectX游戏无论多么优秀,始终都会有OpenGL引擎和游戏站出来发起挑战,而且其画面还相当不错。但DX9C之后,就只有ID Software还在负隅顽抗了,到了DX10时代,再也没有任何一款OpenGL能与DX游戏相抗衡,微软终于一统江湖!

    ● DirectX 10.0:统一渲染架构和几何着色

    DX10又是一次大革命,除了将ShaderModel从3.0升级至4.0版本外,还有两项非常重要技术:

    第一:引入统一渲染架构,从此不再区分像素与顶点着色单元,而是由流处理器单元按照负载动态的执行包括像素和顶点在内的各种着色指令:

为王位而生 GeForce8800全面解析测试

DX11引入统一渲染架构,不同的着色单元不会再出现空闲浪费资源的情况

    第二,引入全新的几何着色单元,它第一次允许由GPU来动态的生成和销毁几何图元数据,使GPU可以在不用CPU干涉的条件下进行反复运算,许多以前无法实时使用的算法现在都可以在GPU中使用了。

    此外,DX10还引入了两种新的HDR格式,避免了HDR和AA不兼容的情况出现,并提升了HDR效率;DX10还大大改进了纹理贴图的精度和效率;其它大大小小的改进有数十项之多,这里就不多做介绍了。

 

 

DirectX 11特性:曲面细分最关键

    ● DirectX 11注重效率:关键特性曲面细分

    DX9C和DX10听起来非常完美,但也有明显的缺点,就是系统资源开销很大,运算效率比较低,所以DX11的重点就落在了改进渲染效能方面。DX11除 了将ShaderModel从4.0升级至5.0外,还有两项最重要的改进就是Tessellation和DirectCompute,其中 DirectCompute的指令集主要来源于ShaderModel 5.0。

    当然还有多线程渲染、增强的纹理压缩格式等其它若干改进,在我们之前的HD5800和GTX480评测中已经做过详细介绍了,因此就不再赘叙。

    Tessellation被译为镶嵌,就是一种能让GPU在模型内部自动插入新的顶点,从而让几何图形变得无比复杂细腻的技术,它可以在很少的性能损失下 换取明显的画质提升。DX11游戏在画面上的改进主要来自于曲面细分技术,而且曲面细分还能带来很多意想不到的特效!

    为了配合Tessellation技术,微软还专门设计了两种全新的Shader着色器,Hull和Domain,以便更精确的控制镶嵌位置,并置换位移贴图。这就与DX9/DX10时代的Tessellation有着本质区别,无法照抄照搬。

    DirectCompute则是微软的GPU计算API,可以让GPU处理一些非图形类指令,获得远超CPU的性能。不过目前DirectCompute主要还是用在图形渲染后处理器方面,可以产生非常逼真的景深、透明效果。

 


转载于:https://www.cnblogs.com/lancidie/archive/2011/01/21/1941124.html


推荐阅读
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了2020年计算机二级MSOffice的选择习题及答案,详细解析了操作系统的五大功能模块,包括处理器管理、作业管理、存储器管理、设备管理和文件管理。同时,还解答了算法的有穷性的含义。 ... [详细]
author-avatar
大眼妹886
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有